我想创建一个基本的AJAX设置来发送用户名和密码配置以及每个AJAX调用。我不是在讨论这是否是正确的方法,这对我的项目是必须的,并且还有其他安全配置,所以......
我认为使用创建数据的jQuery.ajaxSetup(options)
选项对象,但是当我为POST函数定义其他数据时,数据对象将被覆盖。
P.S。我相信没有必要展示我做了什么或我的代码在哪里等等。我希望问题本身是显而易见的。
答案 0 :(得分:2)
您可以使用 beforeSend
和 $.extend
向request
添加包含常用详细信息的额外详细信息,如下所示:
$.ajax({
url:'someurl',
type:'POST',
beforeSend: function(jqXHR, settings) {
settings.data = $.extend(
settings.data, {
//your new data here
}
);
return true;
}
//other related things
})
答案 1 :(得分:1)
您可以使用$.extend()
向基本配置添加其他信息:
var defaultConfig = {username: "User", password: "Insecure Plain Password"};
$.ajax({
url: 'launchMission.php',
data: $.extend(defaultConfig, {missionId: 15, destroyUniverse: true})
});
答案 2 :(得分:1)
你错了!在ajaxSetup
中设置默认数据,然后在ajax调用中添加更多数据本身不会覆盖默认数据。
它像这样工作
$.ajaxSetup({
data: {
username: "Bill Gates",
password: "Nerdman"
}
});
$.ajax({
type: "get",
url: "script.php",
data: {
id: 4,
company: "Microsoft"
}
});
最终的网址为script.php?username=Bill+Gates&password=Nerdman&id=4&company=Microsoft"
,制作请求中发送的最终数据对象
data: {
username: "Bill Gates",
password: "Nerdman",
id: 4,
company: "Microsoft"
}
所有数据 将被发送 ,并且与POST请求相同,所有数据都将被添加。
这是一个Fiddle,检查控制台中的URL,并且所有添加的数据都在那里,因为数据对象是累积的,并且为每次调用添加到$.ajaxSetup
,它永远不会被覆盖。
beforeSend
,就可以在发送之前将数据添加到所有ajax调用中。每次通话
var settings = {
username: "Bill Gates",
password: "Nerdman"
}
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
options.data = $.param($.extend(originalOptions.data, settings))
});
// later
$.ajax({
url : 'something.php',
data : {"more" : "data"} // the above settings will be added as well
});
答案 3 :(得分:0)
不是直接调用ajax方法,而是创建一个基本javascript函数,并让所有页面使用$.extend()
扩展此基本方法。在此基本文件中创建sendAjax方法,并将选项作为参数。然后将配置添加到此数据并进行ajax调用。在每个需要进行ajax调用的类中,调用sendAjax()
方法并传入数据和选项
答案 4 :(得分:0)
我想你会通过阅读jQuery.ajaxSetup's documentation来找到答案:
出于这个原因,我们强烈建议不要使用此API。相反,在调用中显式设置选项或定义一个简单的插件来执行此操作。
基本上,他们建议在jQuery.ajax
周围创建自己的包装器(它可以是jQuery插件的形式)。