1

我有一个将数据提交到表格的模态对话框表单。我想给用户一些关于提交成功/失败的反馈,但成功处理程序没有触发。

我的代码是

$.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);
  }
});

另一个版本将 if/else 块done定义为

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在行上设置了断点,一切都被跳过了。

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

4

2 回答 2

1

您缺少的默认为 HTML/String 或 XML 的“dataType”可能我不记得是哪一个了,但是假设您使用 JSON,如果 dataType: 未设置为 JSON,它不会解释您的后端反馈是有效的,基本上会忽略它。所以type: "POST"下放dataType:"json"

于 2012-08-12T19:41:00.547 回答
0

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

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

对此

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

引号应该围绕第二个参数,除非它们是变量。第一个参数可以这样保留。

于 2012-08-12T20:50:40.780 回答