如何从我在这里使用ajax调用的php文件"读取"响应?

4 html javascript php ajax jquery

我是ajax和jquery的新手,但我在网上遇到了一个代码,我正在操作以满足我的需求.

唯一的问题是我希望能够从PHP响应ajax.

这个ajax POSTS到一个php页面(email.php).

如果邮件被发送或者超出了邮件限制,我如何回复email.php回复(我限制每个用户发送的邮件的nr)?

换句话说,我希望ajax从php代码中取1或0,例如:

  if(response==1){ alert("message sent"); } else { alert("Limit exceeded"); }
Run Code Online (Sandbox Code Playgroud)

这是代码的最后一部分:(如果您需要完整的代码,请告诉我)

var data_string = $('form#ajax_form').serialize();

$.ajax({
    type:       "POST",
    url:        "email.php",
    data:       data_string,
    success:    function() {

    $('form#ajax_form').slideUp('slow').before('');
    $('#success').html('<h3>Success</h3>Your email is has been sent.');
    }//end success function
}) //end ajax call

 return false;

 })
Run Code Online (Sandbox Code Playgroud)

谢谢

T.J*_*der 6

success一个函数$.ajax调用接收参数,通常被称为data虽然这是给你的,包含响应,那么:

success: function(data) {
    // Use the data
}
Run Code Online (Sandbox Code Playgroud)

(如果你需要它,它还会收到一些其他参数;更多的文档.)

data参数的类型将根据内容类型的PHP页面发送响应的变化.如果它发送HTML,data将是一个包含HTML标记的字符串; 如果您的页面发送JSON,则data参数将是已解码的JSON对象; 如果它是XML,data将是一个XML文档实例.

可以使用1或者0如果你喜欢(如果你这样做,我可能会设置内容类型为"text/plain的"),那么:

success: function(data) {
    if (data === "1") {
        // success
    }
    else if (data === "0") {
        // failure
    }
    else {
        // App error, expected "0" or "1"
    }
 }
Run Code Online (Sandbox Code Playgroud)

......但是当我响应Ajax请求,十之八九的我地发回JSON(所以我设置的Content-Type标头application/json),因为那样的话,如果我使用像jQuery能够理解JSON库,我会得到回到一个易于使用的有序的有序对象.我不是一个PHP的人,但我相信你会通过设定的内容类型setContentType,并使用json_encode对数据进行编码发送回.

在你的情况下,我可能回复:

{"success": "true"}
Run Code Online (Sandbox Code Playgroud)

要么

{"success": "false", "errMessage": "You reached the limit."}
Run Code Online (Sandbox Code Playgroud)

这样服务器端代码可以指示我向用户显示的错误消息.然后你的success函数看起来像这样:

success: function(data) {
    var msg;

    if (typeof data !== "object") {
        // Strange, we should have gotten back an object
        msg = "Application error";
    }
    else if (!data.success) {
        // `success` is false or missing, grab the error message
        // or a fallback if it's missing
        msg = data.errMessage || "Request failed, no error given";
    }
    if (msg) {
        // Show the message -- you can use `alert` or whatever
    }
}
Run Code Online (Sandbox Code Playgroud)