首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery statusCode 404 -如何获取jqXhr url?

JQuery statusCode 404 -如何获取jqXhr url?
EN

Stack Overflow用户
提问于 2012-07-13 16:55:22
回答 2查看 9.3K关注 0票数 8

我有一个jquery ajax statuscode函数来处理404...另一个Stack Overflow回答指出,在success方法中,this.url给出了请求的url ...但是,对于我的statusCode处理程序,情况似乎并非如此。有什么想法吗?我在文档中看不到如何获取请求的url。

我的ajax选项对象大致如下所示(在裁剪与此问题无关的代码时可能遗漏了一个大括号)

代码语言:javascript
复制
;(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;

                        }
                    }
            }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-13 17:19:30

AJAX事件处理程序的默认上下文(即绑定到处理程序中的this的对象)实际上公开了一个url属性,因为它是$.ajaxSettings和传递给$.ajax()的参数的混合。

但是,在本例中,您通过在context选项中传递$(this)来覆盖默认上下文。此外,在ajaxOptions中这样做意味着使用当前的URL来扩展该对象并不容易。

我建议在调用AJAX之前,使用data()或类似的方法将URL与您的插件增强的元素关联起来。

票数 9
EN

Stack Overflow用户

发布于 2012-08-16 11:37:39

您可以在使用以下代码发送之前修改请求和设置对象:

代码语言:javascript
复制
$.ajaxSetup({
    beforeSend: function(jqXHR, settings) {
        jqXHR.url = settings.url;
    }
});

然后在statusCode回调中访问xhr.url。应该能行得通。

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11467201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档