use*_*165 5 javascript ajax request-headers
我有以下功能来设置我的AJAX
请求的标头:
self.authenticate = function () {
self.token = sessionStorage.getItem(tokenKey);
var headers = {};
if (self.token) {
headers.Authorization = 'Bearer ' + self.token;
$.ajaxSetup({
headers: headers
});
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,当我检查开发人员收费(F12)或Fiddler中的标头时,我没有看到那里的custon标头,但是当我在请求上设置标头而不是通过ajaxSetup
它完美地工作时.
authenticate
在布局页面中调用这些函数:
$(document).ready(function () {
var avm = new AuthenticationViewModel();
avm.authenticate();
});
Run Code Online (Sandbox Code Playgroud)
而self.token
不是null
.
例如,对于此请求:
self.getUsers = function (callback) {
$.get("../API/Users/GetUsers/",callback);
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
$ .ajaxSetup为将来的Ajax请求设置默认值.
不建议按照JQuery文档中的建议使用它.
无论如何,因为它设置了将来调用的默认值,它必须在所有依赖于这些默认值的ajax调用之前执行.举例来说,如果你没有提到的url
电话,默认url
的是配置的$ajaxSetup
将是url
通话的.如果您所做的调用取决于那些默认值,那么此代码
self.authenticate = function () {
self.token = sessionStorage.getItem(tokenKey);
var headers = {};
if (self.token) {
headers.Authorization = 'Bearer ' + self.token;
$.ajaxSetup({
headers: headers
});
}
}
Run Code Online (Sandbox Code Playgroud)
必须在进行以下调用之前执行.
self.getUsers = function () {
$.get("../API/Users/GetUsers/");
}
Run Code Online (Sandbox Code Playgroud)
现在检查一下
***************寻求回答****************
在那个plunker 中,按F12键进入开发者控制台中的网络选项卡,然后检查由和生成的那些调用中的标题$.ajax()
$.get()
我在观察到的那个(要点读)点,
$.ajax()
那么标题显示,并且url
呼叫是在url
中提到的$.ajaxSetup
$.get()
那么标题没有显示,并且url
调用的是plunker
url意味着在你的情况下它将是http://MySite/
等等.
$.ajax()
是最可配置的,您可以在其中获得对HTTP标头等的细粒度控制.您还可以使用此方法直接访问XHR对象.还提供了稍微更精细的错误处理.因此可能更复杂,而且往往是不必要的,但有时非常有用.您必须使用回调处理返回的数据.
$.get()
只是一个简写,$.ajax()
但是抽象出一些配置,为它隐藏的东西设置合理的默认值.将数据返回给回调.它只允许GET请求,因此伴随着$.post()
类似抽象的功能,仅用于POST
有关更多信息
$ .ajax()和$ .get(),$ .post()之间的差异
如果你愿意,可以测试一下.
$ .ajax()调用的图片
$ .get()调用的图片
因此,如果你想设置headers
正确使用$.ajax()
而不是$.get()
希望这可以帮助 :)
我最终搬家了:
$(document).ready(function () {
var avm = new AuthenticationViewModel();
avm.authenticate();
});
Run Code Online (Sandbox Code Playgroud)
从Layout
页面到页面本身,这解决了问题。
AuthenticationViewModel - 创建一个新的 AuthenticationViewModel 用于登录用户并获取其信息。
归档时间: |
|
查看次数: |
2136 次 |
最近记录: |