如何创建jquery对象的第二个实例?
我需要第二个jQuery实例,或者至少是它的AJAX工具。 问题是我需要联系两台服务器,他们使用不同的身份验证方法。如何创建jquery对象的第二个实例?
因此,在一个情况下,我需要设置一个标题:
$.ajaxSetup({
headers: {
'Authorization': auth_string
}
});
在另一种情况下
不能及的。如果我发送标题,请求将失败。
由于我需要始终从两台服务器获取数据,因此我不希望在每次AJAX调用之前操作标头。所以最好使用两个不同的AJAX/jQuery对象。
我该如何做到这一点?
你就应该能够使两个独立设置的对象,像这样:
var serverSettings1 = { headers: { 'Authorization': auth_string1 } }
var serverSettings2 = { \\ no headers here }
再经过他们时,你的Ajax调用中:$.ajax(serverSettings1);
或$.ajax(url, serverSettings2);
设置对象也可以保存请求类型,网址等。
以下我的评论:我建议不要使用全局配置,并使用两个按需使用的ajax选项对象。
有了一些分解则可能是:
var optionsServerA = {
headers: {
'Authorization': auth_string
}
};
var optionsServerB = {};
// request on server A
$.ajax(
$.extend({
url: 'http://servera',
data: {}
}, optionsServerA)
)
.then(...);
// request on server B
$.ajax(
$.extend({
url: 'http://serverb',
data: {}
}, optionsServerB)
)
.then(...);
而且你可以创建包装以防万一“Ajax”的可读性更好
我现在正在使用类似的解决方案。我会说更灵活。 我有一个对象,它处理我的ajax调用,这有一个属性'headers',可以设置类似于我以前的功能。当我做ajax调用时,我使用:'.ajax({url:...,data:...,headers:self.headers,...})'while self('var self = this; ')在我的方法中包含对象。仍然...我在等待一个答案如何创建第二个实例有些日子。 – helle
我不知道你做了'VAR jq2 = jQuery.extend会发生什么(真,{},jQuery);',如[这个答案]的启发(http://stackoverflow.com/questions/122102/what-is-the-most-efficient-way-to-clone-an-object) – Utkanos
为什么不使用ajax调用的url参数? – Nadir
@Utkanos:如果我尝试使用它,它会说:“它不是一个对象”。 @Nadir:你是什么意思? – helle