当前位置: 首页 > 面试题库 >

jQuery ajax调用返回错误,就绪状态为4,状态为200,状态文本为ok

吴开宇
2023-03-14
问题内容

这真让我感到困惑。我收到来自Ajax的错误回调。但是,如果我从错误消息中获取res.responseText(返回正确,顺便说一句)并使用它,则它做对了。就像我收到了成功的回调一样。

数据设置如下:

var dataToSend = {fieldname : textdata};

和ajax调用是这样的:

var ajaxOptions = {
    url: '/newpage',
    data: JSON.stringify(dataToSend),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    cache: false,
    processData: false,
    type: 'POST',
    success: function(res) {
        console.log("success!");
        $('#' + divname).html(res);
    },
    error: function(res) {
        console.log("There was an error: " + JSON.stringify(res));
        $('#' + divname).html(res.responseText);
    }
};

$.ajax(ajaxOptions);

错误消息是:发生错误:{"readyState":4,"responseText" [this part is perfectly fine], "status":200, "statusText":"OK"}


问题答案:

如果您的responseText不是正确的JSON,则会引发解析错误。无论是 确保你的反应是一个有效的JSON删除dataType: "json"

从jQuery文档:

dataType (默认值:Intelligent Guess(xml,json,脚本或html))

类型:字符串

您期望从服务器返回的数据类型。如果未指定,则jQuery将尝试根据响应的MIME类型来推断它(XML
MIME类型将产生XML,在1.4中,JSON将产生JavaScript对象,在1.4中,脚本将执行该脚本,而其他任何内容将是以字符串形式返回)。可用的类型(以及作为第一个参数传递给您的成功回调的结果)是:

“ json”:将响应评估为JSON并返回一个JavaScript对象。跨域“ json”请求将转换为“
jsonp”,除非该请求的请求选项中包含jsonp:false。JSON数据以严格的方式进行解析;任何格式错误的JSON都会被拒绝,并引发解析错误。从jQuery
1.9开始,空响应也被拒绝;服务器应返回null或{}的响应。(有关正确的JSON格式的更多信息,请参见json.org。)



 类似资料:
  • 我遇到了从html向servlet提交数据的问题 消息为空 说明服务器遇到意外情况,无法完成请求。 例外情况 注意服务器日志中提供了根本原因的完整堆栈跟踪。

  • 问题内容: 我在这我想从服务器获取与$ HTTP GET XML数据的AngularJS应用说http://example.com/a/b/c/d/getDetails?fname=abc&lname=def(此通过在浏览器中输入链接进行手动访问时显示XML文件的树状结构)。 当我运行应用程序时,不会从该链接获取数据。而是显示 状态为0 的错误。 我不确定$ http.get为什么会失败并转到返回

  • 我使用Spring中的webClient从GraphQL WebService中获取数据。此代码位于一个泛型方法中,该方法将响应体解码为不同类型的对象。如果响应是预期的类型,则它运行良好。 现在我想处理来自WebService的错误。因此,我的问题与此非常相似:Spring Webflux:Webclient:Get body on error我发现建议使用onStatus,但我的问题是,即使re

  • 我正在使用React-useState创建状态为的对象。在成功调用API后,将更新为数据对象。 我有一个表单可以更改此状态,但我还有一个取消按钮。单击“取消”时,如何将此状态恢复为其初始值(API调用后)? 我应该创建另一个状态变量和存储初始状态在那里,然后更新我的状态基于?

  • spread.js:25 GET[大URL]502() 然而,当我在Chrome中转到Network选项卡并在browser中查看复制的链接地址时,我会得到一个带有我想要的数据的JSON响应。我在CloudWatch中找不到错误。 标题

  • 像“addSomething()”这样的类也有方法。这个可以成功也可以不成功。因此,成功的状态可以用一个布尔返回值来显示。但是有时方法调用会因为几个原因而失败。“false”显示了这一点,但只是以一般方式显示。有时程序员想知道失败的原因。为此,提供一个自己的报告类来提供这样的功能有用吗? 然后,您可以决定是否要使用“wassucsuccess()”获取一般成功报告,或者是否还要使用“getMess