我有一个模式对话框表单,用于将数据提交到表中。我想向用户提供有关提交成功/失败的一些反馈,但成功处理程序未触发。
我的代码是
$.ajax({
type: "POST",
url: "includes/phpscripts.php?action=submitWiki",
data: {"name": location, "location": locationName, "text": locationText, "user": userId},
beforeSend: function(x){
if (x && x.overrideMimeType){
x.overrideMimeType("application/json;charset=UTF-8");
}
},
async: false
}).done(function(data){
if (data == "failure"){
$("#submissionFailure").dialog("open");
} else {
$("#submissionSuccess").dialog("open");
var count= 3;
var id= setInterval(function(){
count--;
if (count == 0)
$("#submissionSuccess").dialog("close");
}, 1000);
}
});
另一个版本的 done
中的 if/else block 定义为
success: function(data){
if (data == "failure"){
$("#submissionFailure").dialog("open");
} else {
$("#submissionSuccess").dialog("open");
var count= 3;
var id= setInterval(function(){
count--;
if (count == 0)
$("#submissionSuccess").dialog("close");
}, 1000);
}
}
在 Firebug 中,由于 echo 语句,我可以清楚地看到请求的返回是 success
,但 success 函数被跳过。我直接在 done
行设置断点,所有内容都会被跳过。
此外,这些帖子正在被记录到数据库中。
最佳答案
您缺少的“dataType”默认为 HTML/String 或 XML,也许我记不清是哪一个了,但是假设您使用 JSON,如果 dataType: 未设置为 JSON,则它不会不会将您的后端反馈解释为有效,并且基本上会忽略它。所以在 type: "POST"
下输入 dataType:"json"
关于javascript - jquery ajax 成功函数未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11925263/