jquery ajax成功函数没有执行

时间:2012-08-12 19:35:46

标签: javascript 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中,由于echo语句,我可以清楚地看到请求的返回是success,但是跳过了成功函数。我已经在done行直接设置了断点,一切都被跳过了。

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

2 个答案:

答案 0 :(得分:1)

你缺少的“dataType”,默认为HTML / String或XML,也许我不记得哪一个是我的头脑,但是假设你使用JSON,如果dataType:没有设置为JSON就赢了'将您的后端反馈解释为有效,并且基本上会忽略它。所以在type: "POST"dataType:"json"

答案 1 :(得分:0)

像Chris ^告诉你的那样,添加数据类型,然后更改此行

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

到那个

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

引号应该在第二个参数附近,除非它们是变量。第一个参数可以保留。