2014-06-16 91 views
0

有時,在IE中,我的ajax請求不會發送標頭X-Requested-With。我在谷歌搜索,找到了兩種方法來做到這一點。這兩種方式似乎都有道理。我想知道他們之間是否有區別。用jQuery添加請求標頭的正確方法

1)使用ajaxSend

$(document).ajaxSend(function (event, request, settings) { 
    request.setRequestHeader("X-Requested-With", "XMLHttpRequest"); 
}); 

2)使用AjaxSetup

$.ajaxSetup({ 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); 
    } 
}); 
+0

出於某種原因,不推薦使用'ajaxSetup()',這樣就會使用'ajaxSend()'。 http://api.jquery.com/jquery.ajaxsetup/ – PeterKA

回答

0

如果使用完全成熟jQuery.ajax()您可以使用標題屬性:

$.ajax({ 
    headers: { "ResponseDataType" : "Json", 
    "X-Requested-With", "XMLHttpRequest"}, 
    // etc 
}); 

加入無水版:

(function (window, undefined) 
{ 
    function extendedAjax(settings) 
    { 
    var defaultSettings = { 
     headers: { "X-Requested-With": "XMLHttpRequest" } 
    }; 

    $.extend(defaultSettings, settings); 

    var jqXHR = $.ajax(settings); 

    return jqXHR; 
    } 

    $.extend({ 
    eajax: extendedAjax 
    }); 

})(window); 
+0

是的,我知道,但我想要做到所有的請求。 –

+0

我只是擴展jQuery使用我需要的所有需求,以便我的代碼保持[DRY](http://en.wikipedia.org/wiki/Don't_repeat_yourself)。 –

+0

爲什麼不使用ajaxSetup並設置標題? –