ajax与jQuery的异步提交,他在啥情况下会走error

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax与jQuery的异步提交,他在啥情况下会走error相关的知识,希望对你有一定的参考价值。

  亲,简单的说Ajax请求通过XMLHttpRequest对象发送请求,该对象有四个状态(readyState):0-未初始化1-正在初始化2-发送数据3-正在发送数据4-完成当XMLHttpRequest.readyState为4时,表示请求已经完成可以得到响应结果。当然success和error方法还是根据响应状态码来触发。当XMLHttpRequest.status为200的时候,表示响应成功,此时触发success().其他状态码则触发error().
  Jquery的$.ajax()函数只是封装了ajax请求,本质上还是通过JS XMLHttpRequest内置对象来处理的。
参考技术A 结果正常返回就走success,异常就走error,

最早的ajax都有这样的代码
if(req.readyState == 4) 表示接受结果完毕了。
if(req.status == 200) 服务端正常返回
如果无语法正常返回的时候就会走error.
参考技术B 亲,简单的说Ajax请求通过XMLHttpRequest对象发送请求,该对象有四个状态(readyState):0-未初始化1-正在初始化2-发送数据3-正在发送数据4-完成当XMLHttpRequest.readyState为4时,表示请求已经完成可以得到响应结果。当然success和error方法还是根据响应状态码来触发。当XMLHttpRequest.status为200的时候,表示响应成功,此时触发success().其他状态码则触发error().
Jquery的$.ajax()函数只是封装了ajax请求,本质上还是通过JS XMLHttpRequest内置对象来处理的。

JSONSerialization.data(withJSONObject:) 在啥情况下会抛出可捕获的错误?

【中文标题】JSONSerialization.data(withJSONObject:) 在啥情况下会抛出可捕获的错误?【英文标题】:Under what circumstances does JSONSerialization.data(withJSONObject:) throw a catchable error?JSONSerialization.data(withJSONObject:) 在什么情况下会抛出可捕获的错误? 【发布时间】:2015-11-07 15:37:55 【问题描述】:

JSONSerialization.data(withJSONObject:options:)(在 Swift 2 中又名dataWithJSONObject)被声明为throws。但是,传递无效对象会导致崩溃,而不是可捕获的错误:

do  
    // Crash
    try JSONSerialization.data(
        withJSONObject: NSObject(),
        options: [])
    
catch
    
    // Never reached
    print("Caught error:", error)
    

那么,为什么将该方法声明为“抛出”?什么情况下会抛出异常?

不知道引发错误的原因会导致很难知道如何处理错误,并且无法编写验证该处理的测试。

【问题讨论】:

【参考方案1】:

结果与this question 的情况相同:您可以创建一个包含无效 unicode(什么?!)的 Swift 字符串,这会导致异常。

let bogusStr = String(
    bytes: [0xD8, 0x00] as [UInt8],
    encoding: String.Encoding.utf16BigEndian)!

do  
    let rawBody = try JSONSerialization.data(
        withJSONObject: ["foo": bogusStr], options: [])
    
catch
    
    // Exception lands us here
    print("Caught error:", error)
    

为什么原始问题中的示例代码会崩溃,而不是抛出错误?

在回复错误报告时,Apple 告诉我,如果您不确定该对象是否可编码,您应该在 data(withJSONObject:) 之前调用 JSONSerialization.isValidJSONObject(_:),如果不这样做是对 API 的滥用,那就是为什么他们决定它应该崩溃而不是抛出可捕获的东西。

【讨论】:

这并没有回答“JSONSerialization 在什么情况下会抛出错误”的问题。我会扩展这个问题并询问“JSONSerialization 会抛出什么错误”。到目前为止,我还没有在类文档的任何地方看到这个。 我想你可能会混淆异常和错误。发生崩溃是因为引发了异常。如果该方法抛出错误,它将是可捕获的。他们是两个不同的东西。我和我以为你试图找出的是,该方法会抛出哪些错误,以及它何时会抛出这些错误。您看到的是异常,而不是错误。 答案的第一句和示例代码,演示了一个异常。 (注意示例代码中的catch。)答案的最后一段涵盖了问题中提到的崩溃,这是由不同的条件引起的。我会更新答案以澄清这一点。

以上是关于ajax与jQuery的异步提交,他在啥情况下会走error的主要内容,如果未能解决你的问题,请参考以下文章

MySQL like 在啥情况下会走索引

ajax在什么情况下会走success和error

如何使用 jQuery ajax() 方法异步提交 验证用户登录

oracle表在啥情况下会被锁住

SQLite中的页面缓存在啥情况下会被清除?

AppDomain.DoCallback()在啥情况下会失败?