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的主要内容,如果未能解决你的问题,请参考以下文章