beforeSend jquery函数的参数是什么?

时间:2012-10-04 21:30:18

标签: javascript ajax jquery

我一直在看一些beforeSend回调函数的例子。 这些示例有时使用输入参数:beforeSend:function(req)beforeSend:function(xhr)

我认为此参数是jquery请求的XMLHTTPRequest,但是当我尝试这些示例时,似乎xhrreq对象是null

是否有必要创建xhr参数并在调用jquery对象的执行之前对其进行初始化?

以下是我正在尝试的查询:

function make_basic_auth(un, pss)
{
  var tok = un + ':' + pss;
  var hash = Base64.encode(tok);
  return "Basic " + hash;
}

$('#loginform').submit(function()
{
    $.ajax
    (
        {
            type: 'POST',
            url: 'my.ip.address',
            beforeSend: function(jqXHR, settings)
            {   
                var username = $('.username').val();
                var password = $('.passcode').val();
                var auth = make_basic_auth(username, password);

                jqXHR.setRequestHeader("Authorization",  auth);
                jqXHR.setRequestHeader('Content-Type', 'text/plain');
            },
            success: function (){
               alert("ok");
            },
            error: function (){
               alert("no");
            }
        }
    );
});

1 个答案:

答案 0 :(得分:1)

检查以下代码:

$.ajax({
  url: "google.com",
    beforeSend: function(jqXHR, settings) {
        jqXHR.error = function(){
            alert("failed");
        }
    }
})​

工作示例:http://jsfiddle.net/kXerD/

在这里,我说在发送请求之前,请为此请求添加错误处理程序。 JQuery提供jqXHR的对象和与此请求相关的设置。我们不需要初始化它们。