我有一个jquery ajax statuscode函数来处理404...另一个Stack Overflow回答指出,在success方法中,this.url给出了请求的url ...但是,对于我的statusCode处理程序,情况似乎并非如此。有什么想法吗?我在文档中看不到如何获取请求的url。
我的ajax选项对象大致如下所示(在裁剪与此问题无关的代码时可能遗漏了一个大括号)
;(function($) {
var defaultSettings = {
// ... other plugin specific settings
ajaxOptions:
{
cache:false,
context:$(this),
statusCode: {
404:function(xhr) {
// this line... this.url is always undefined (so is xhr.url)
$('#body').append('<div class="errordisplay">Content not found' + (this.url?': ' + this.url:'') + '</div>');
// ... do other stuff
return false;
}
}
}
}发布于 2012-07-13 17:19:30
AJAX事件处理程序的默认上下文(即绑定到处理程序中的this的对象)实际上公开了一个url属性,因为它是$.ajaxSettings和传递给$.ajax()的参数的混合。
但是,在本例中,您通过在context选项中传递$(this)来覆盖默认上下文。此外,在ajaxOptions中这样做意味着使用当前的URL来扩展该对象并不容易。
我建议在调用AJAX之前,使用data()或类似的方法将URL与您的插件增强的元素关联起来。
发布于 2012-08-16 11:37:39
您可以在使用以下代码发送之前修改请求和设置对象:
$.ajaxSetup({
beforeSend: function(jqXHR, settings) {
jqXHR.url = settings.url;
}
});然后在statusCode回调中访问xhr.url。应该能行得通。
https://stackoverflow.com/questions/11467201
复制相似问题