1

我正在构建一个显示用户列表的系统,并在选择用户时请求某种形式的密码。这些值保存在页面上的隐藏字段中,并且需要作为身份验证的形式与每个请求一起发送。(我知道其中存在 MITM 漏洞,但它是一个非常低调的系统,因此安全性不是一个大问题)。

现在我需要在每个请求中发送这些值,以验证当前“登录”的用户。我想通过 自动化这个,ajaxSetup但是我遇到了一些问题。

我的第一次尝试是:

init_user_auth: function(){
    $.ajaxSetup({
        data: {
            'user'    : site_user.selected_user_id(),
            'passcode': site_user.selected_user_pc(),
            'barcode' : site_user.selected_user_bc()
        }
    });
},

但是,正如我应该知道的那样,这会在调用时读取一次值ajaxSetup,并且永远不会重新读取它们。我需要的是一种在每次进行 ajax 调用时实际调用函数的方法。

我目前正在尝试了解这里发生了什么:https ://groups.google.com/forum/?fromgroups=#!topic /jquery-dev/OBcEfgvTJ9I,但是通过火焰战和那里发生的非常低级的事情,我不确定我知道发生了什么。

这是继续的方式,还是我应该面对事实并手动将登录信息添加到每个 ajax 调用?

4

2 回答 2

5

如果我猜对了,请查看此示例代码,它会为每个 ajax 请求添加某些值,

(function ($) {
    var _ajax = $.ajax,
    A = $.ajax = function(options) {                    
        if (typeof options.data == 'object') {                      
            $.extend( options.data, A.data );
        } else if (typeof options.data == 'string' && options.data.length > 0) {
            for (var key in A.data) {
                options.data += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(A.data[key]);
            }
        } else {
            options.data = A.data;
        }
        return _ajax(options);
    };
})(jQuery);

你这样称呼它:

$.ajax.data = { "user": 10, "pass" : 20 }; //params that always need to be passed

然后ajax调用,

$.ajax({
    type: "POST",
    url: "http://localhost/blg/crl_chk.php",
    data : { "first" : 1},  //now those params will be added wit this
    success: function(resp) {
    console.log( resp );
    }
});

如果您$.ajax在没有数据的情况下调用,这些参数将被传递。

你的意思是这样的吗

于 2012-09-06T10:15:41.253 回答
2

似乎只有在将 Ajax 设置对象与您的存根合并时,才会调用您想要调用的函数。(大概在第一个ajax请求期间)

你可以做的是让你的数据对象引用全局变量而不是函数。

“但那不会在$.ajax()你说的每次调用时调用函数吗?

只需在.ajaxSend()or处调用您的函数.ajaxStart()并让它们更新全局变量!

http://api.jquery.com/ajaxSend/

http://api.jquery.com/ajaxStart/

于 2012-09-06T10:15:05.593 回答