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)
谢谢
在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)