从$返回的jqXHR中获取状态码失败.post调用
failed to get status code from returned jqXHR of $.post call
我使用jQuery通过注册提交事件监听器来发布和插入一行记录到表体的末尾。这里是小提琴:https://jsfiddle.net/8jew8kk7/4/
$("form").submit(function(event) {
event.preventDefault()
jx = $.post('data.asp', 'action=add&' + $(this).serialize())
console.log("jx=" + jx.status)
if (jx.status == 404) {
alert("404 not found")
return false
}
tdstring = "<tr><td>" + $("input[name='pkeyEmployeeID']").val() + "</td><td>" + $("input[name='strFirstName']").val() + "</td><td>" + $("input[name='strLastName']").val() + "</td><td>" + $("input[name='dtmBirthDate']").val() + "</td><td>" + $("input[name='strHomePhone']").val() + "</td>"
delstring = '<td><button type="button" name="action" value="del" onclick="del(this)" fid="' + $("input[name='pkeyEmployeeID']").val() + '">add</button></td></tr>'
$(this).find('tbody').append($(tdstring + delstring).hide().fadeIn('normal'))
})
但jx.status
总是undefined
。当在Chrome控制台执行x=$.post('data.asp').status
时,我可以得到服务器返回的代码。这个片段有什么缺陷吗?
由于您的代码异步运行console.log("jx= " + jx.status)
在ajax请求完成之前运行,因此没有statusfor jx对象这样的东西,因此它返回未定义。为了使用它,在.always()
函数中运行它。此外,你需要使用选择器$("input[name='pkeyEmployeeID']")
,而不是$("input[name='pkeyEmployeeID'")
jx.always(function(){
alert( jx.status)
if (jx.status == 404) {
alert("404 not found")
return false
}
})
JSFIDDLE
jQuery。Post(或$. Post)方法返回一个promise对象。因此,如果你想从jqXHR获取数据,你必须从then(), always()或fail()方法的promise中获取数据。
jx = $.post('data.asp', 'action=add&' + $(this).serialize())
jx.always(function(data, textStatus, jqXHR){
if(jqXHR.status == 200)
//your code here
})
jQuery 1.5中$.ajax()返回的jqXHR对象实现了Promise接口,赋予它们Promise的所有属性、方法和行为(更多信息参见Deferred object)。这些方法接受一个或多个函数参数,这些参数在$.ajax()请求终止时被调用。这允许您在单个请求上分配多个回调,甚至可以在请求完成后分配回调。(如果请求已经完成,则立即触发回调)
http://api.jquery.com/jQuery.ajax/jqXHR
演示:https://jsfiddle.net/8jew8kk7/14/
- Nodejs服务器:加载资源失败:服务器的响应状态为404(未找到)
- 当服务失败时,如何解析状态
- 带Jquery的wep API,加载资源失败:服务器响应状态为404(未找到)
- 加载资源失败:服务器使用 nodejs 以状态 404(未找到)进行响应
- 在 Couchdb ( 虹膜沙发 ) POST 请求中添加新文档失败,状态为 500
- 角度 UI 路由器 - 在没有参数的情况下从一个状态转换到同一状态失败
- 未能加载资源:服务器的响应状态为412(前提条件失败)
- HTTP请求失败,状态为:0
- Segment.IO请求失败,状态为“已取消”
- 承诺失败状态
- Steam Post请求-加载资源失败:服务器的响应状态为400(错误请求)
- 芹菜+Django——使用Django消息框架轮询任务状态和报告成功或失败
- 加载资源失败:服务器响应404(未找到)状态
- 区分ajax错误中的请求失败(无网络)和请求取消(HTTP状态码0)
- 加载资源失败:服务器使用Ajax响应状态为500
- Ajax错误准备状态失败
- Apache Cordova:加载资源失败:服务器响应404(未找到)状态
- 在Rails中,如何在视图中显示控制器操作成功或失败的JSON状态消息
- 加载资源失败:服务器响应404(未找到)状态
- 防止状态=失败的chrome浏览器,同时加载多个html5视频