jquery ajax成功功能不执行

问题描述:

我有一个模式对话框窗体,提交数据到表。我想给用户提交关于提交成功/失败的一些反馈,但成功处理程序不会解雇。jquery ajax成功功能不执行

我的代码是

$.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块定义为

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中,我可以清楚地看到从请求返回的是success由于echo语句,但成功函数正在跳过。我已经在done行上直接设置了断点,并且所有内容都被跳过了。

此外,帖子正在被记录到数据库中。

丢失的“数据类型”,默认为HTML /字符串或XML也许我不记得哪一个把我的头顶部,但让说与JSON你的工作,如果数据类型:未设置成JSON它赢得不会将您的后端反馈解释为有效,并且基本上会忽略它。所以type: "POST"下把dataType:"json"

+0

“但让我们说你使用JSON” - 为什么?问题中没有任何内容表明它们是。 – 2012-08-12 20:27:16

+0

以及您的权利,比'x.overrideMimeType( “应用/ JSON的;字符集= UTF-8”);其他'行... – chris 2012-08-12 21:39:07

+0

啊,你是正确的 - 不知道我怎么错过了。 – 2012-08-13 08:18:40

像克里斯^告诉你,添加数据类型,然后改变这一行

data: {"name": location, "location": locationName, "text": locationText, "user": userId} 

为此

data: {name: "location", location: "locationName", text: "locationText", user: "userId"} 

的报价应该在第二个参数,除非他们是变量。第一个参数可以像这样留下。

+1

的物体上使用周围的按键报价不会影响任何东西,无论哪种方式是有效的。 – 2012-08-13 08:19:29

+0

恩,谢谢。不知道。 – 2012-08-13 20:00:54