【问题标题】:Jquery: Ajax POST request / success event not firedJquery:未触发 Ajax POST 请求/成功事件
【发布时间】:2018-09-07 04:53:08
【问题描述】:

我有一个处理 HTTP 发布请求的后端服务器 (nodejs)。 POST 请求用于向后端发送 JSON 数据并返回纯文本。

问题出在我的带有 JQuery 的客户端 JS 上。当我对该 POST 请求调用 ajax 函数时,JSON 数据已正确发送到后端,但请求(可以,res status=200)不会触发成功事件。

console.log(JSON.stringify(gen_report_info));
$.ajax({
        type: "POST",
        url: "api/getReport",
        data: JSON.stringify(gen_report_info),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            console.log(data);
            $("#progress").append(data);
        },
        failure: function (errMsg) {
            console.log(errMsg);
        }
    });

答案标题下方:

Connection →Keep-Alive
Status →200 OK
Content-Length →832
Content-Type →text/plain; charset=utf-8
Date →Wed, 28 Mar 2018 13:15:14 GMT
ETag →W/"340-gxxXGSzjzUm41Z82ZlguHspl9nk"
Keep-Alive →timeout=15, max=100
X-Powered-By →Express
X-RSP-Enclose →none

如果我使用“完成”事件而不是成功,它会起作用 但我想了解为什么不触发成功事件

【问题讨论】:

  • 您能否显示您从 ajax 调用中获得的 json 响应。服务端发送的响应不是json格式的,所以这可能是没有调用成功函数的原因
  • 尝试使用error:而不是`失败:`
  • 您能否显示您从 ajax 调用中获得的 json 响应。服务器发送的响应不是json格式的,所以这可能是不调用success函数的原因。您可以从 ajax 中删除 dataType: "json", 行并在成功功能启动后立即添加 data = JSON.parse(data)
  • 其实服务器回答的是纯文本而不是JSON字符串

标签: jquery


【解决方案1】:

结果可能不是 JSON 格式,所以当 jQuery 尝试解析它时,它会失败。 您可以使用 error: 回调函数来捕获错误。 您可以从服务器返回 json 格式的响应,也可以从 AJAX 调用中删除 dataType:'JSON'。

【讨论】:

  • 确实,删除dataType 选项效果更好。谢谢
【解决方案2】:

你错了

contentType: "application/json; charset=utf-8"

 data: JSON.stringify(gen_report_info),

试试这个

$.ajax({
        type: "POST",
        url: "api/getReport",
        data: JSON.stringify(gen_report_info),
        contentType: "application/text; charset=utf-8",
        dataType: "json",
        success: function (data) {
            console.log(data);
            $("#progress").append(data);
        },
        failure: function (errMsg) {
            console.log(errMsg);
        }
    });

【讨论】:

  • 当我更改 ContentType 时,后端无法将发布的字符串识别为 JSON。
猜你喜欢
  • 2011-08-05
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 2011-02-22
相关资源
最近更新 更多