【问题标题】:jQuery success POST php not activatejQuery成功POST php未激活
【发布时间】:2014-07-10 17:52:44
【问题描述】:

我绞尽脑汁,我无法让它工作。

我正在使用 jQuery 调用 PHP 页面:

$.ajax({
      type: "POST",
      url: postUrl,
      data: formData,
      async : false,
      contentType: 'application/json; charset=utf-8',
      dataType: 'json',
      success: App.successfulAdd,
      error: App.errorAdd
    });

successfulAdd : function(result) {
    alert("Success!");
},

PHP:

echo json_encode(array('msg' => 'failed'));

萤火虫表演:

{"msg":"failed"}

但是没有调用successfulAdd函数!知道为什么吗?


我已经改成

$.ajax({
      type: "POST",
      url: postUrl,
      data: formData,
      async : false,
      contentType: 'application/json; charset=utf-8',
      dataType: 'json',
      success: function (data) {
        alert("Success!");
        },
      error: function (data) {
        alert("Error!");
        }
    });

但仍然错误!显示出来。

更新

终于找到了! 使用 Notepad++ 并作为 UTF8 编码。更改为没有 BOM 的 UTF8,现在一切正常。

【问题讨论】:

  • 查看您的控制台 - 请求的状态是什么?
  • 我认为您遗漏了一些重要的代码部分。 successfulAdd : 肯定存在于某个对象中,那在哪里?
  • 看起来您在分配 App.successfulAdd 之前进行了 AJAX 调用,因此此时它没有值。请显示整个代码。
  • @tymeJV 我认为状态是200。对吧?
  • console.log(App.successfulAdd);放在$.ajax之前,我想你会明白我是对的。

标签: javascript php jquery json


【解决方案1】:

尝试更改为:

success: function(result) {
    App.successfulAdd(result);
},
error: function(result) {
    App.errorAdd(result);
}

这将在响应到达时评估属性,而不是在您发送请求时。我怀疑您在构建 App 对象时发送了请求,而这些属性尚未分配。

【讨论】:

    【解决方案2】:

    我想我找到了问题的原因:jQuery的版本。

    版本:1.11.1、1.11.0、1.10.2、1.10.1、1.10.0、1.9.1、1.9.0 不工作。 版本 1.8.3 有效。

    【讨论】:

    • 您发布的代码在 jQuery 版本之间没有显着变化。听起来您的代码中存在旧版本未检测到的问题,但新版本增加了更多检查。
    猜你喜欢
    • 2011-08-05
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 2013-02-09
    相关资源
    最近更新 更多