始终使用ajax请求/帖子发送某些值

时间:2012-09-06 08:58:41

标签: jquery ajax

我正在构建一个显示用户列表的系统,并且在选择用户时会请求某种形式的密码。这些值保存在页面上的隐藏字段中,需要作为一种身份验证形式与每个请求一起发送。 (我知道这里的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调用添加login-info?

2 个答案:

答案 0 :(得分: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,那么这些参数将被传递。

你的意思是什么

答案 1 :(得分:2)

只有在Ajax设置对象与存根合并时,才会调用您希望调用的函数。 (大概是在第一次ajax请求期间)

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

“但是,在你说$.ajax()的每次电话会议时都不会调用该功能吗?

只需在.ajaxSend().ajaxStart()拨打您的电话,让他​​们更新全球变量!

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

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