javascript - jquery ajax 成功函数未执行

标签 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 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/

相关文章:

javascript - 创建 ID 不相互跟随的父子树 JSON

javascript - IE10 MSPointerUp 在不释放手指的情况下触发(触摸保持时)

jquery - 将星形在中间垂直对齐到文本区域

jquery - Bootstrap如何垂直对齐不同列中的内容?

javascript - 网站淡入之前的加载器

javascript - 如何通过 jquery ajax 发送不同的行 id,通过单击复选框来更新另一个 php 页面中的表记录?

javascript - 嵌入式 javascript 和 HTML 中的安全性

javascript - 曲线公式(javascript 中的代数)

javascript - 如何为pdfmake表格中的每两行着色

php - 如何使用 ajax jquery 和 php 为多表单流程制作动画?