beforeSend:AJAX jQuery POST在firefox中没有传递头值

时间:2013-02-20 09:30:17

标签: jquery asp.net ajax firefox wcf-data-services

我在jQuery AJAX POST中调用了一个REST服务。当我在AJAX调用中不使用 beforeSend 函数时,该服务被调用并且http请求变为 POST 请求。但是当使用beforeSend函数时,请求将作为 OPTIONS 请求传递,并且不会调用该服务并返回null。它适用于IE8。当添加 beforeSend 时,Firefox会发生什么?我的代码中有任何错误。
jQuery 代码

var postCall = function () {
$.support.cors = true;
var HFAssoRefId = document.getElementById('MainContent_HFAssoRefId').value;
var HFLoginId = document.getElementById('MainContent_HFLoginId').value;
var HFPartnerId = document.getElementById('MainContent_HFPartnerId').value;
var HFFirstName = document.getElementById('MainContent_HFFirstName').value;
var HFLastName = document.getElementById('MainContent_HFLastName').value;
var HFComments = document.getElementById('MainContent_HFComments').value;
var HFCreatedDate = document.getElementById('MainContent_HFCreatedDate').value;
var HFToken = document.getElementById('MainContent_HFToken').value;
var Input = {
AssoRefId: HFAssoRefId, LoginId: HFLoginId, 
PartnerId: HFPartnerId, FirstName: HFFirstName,
LastName: HFLastName, Comments: HFComments,
CreatedDate: HFCreatedDate, Token: HFToken
;
alert(JSON.stringify(Input));
var url = document.URL;
var currentdate = new Date();
var datetime = (currentdate.getMonth() + 1) + "/"
+ currentdate.getDate() + "/"
+ currentdate.getFullYear() + " "
+ currentdate.getHours() + ":"
+ currentdate.getMinutes() + ":"
+ currentdate.getSeconds();
$.ajax({
type: "POST",
beforeSend: function (xhr, settings) {
xhr.setRequestHeader("Date", datetime);
xhr.setRequestHeader("URL", url);
},
url: "http://localhost:40680/LinkService.svc/TokenInsertion",        
data: JSON.stringify(Input),
contentType: "application/json",
dataType: "json",
success: function (response) {
alert(response);
},
error: function (xhr, status, error) {
alert(error);
alert(status);
}
});
}

1 个答案:

答案 0 :(得分:1)

这是Great Example.

$.ajax(
{
    type:"POST",
    beforeSend: function (request)
    {
        request.setRequestHeader("Authority", authorizationToken);
    },
    url: "entities",
    data: "json=" + escape(JSON.stringify(createRequestObject)),
    processData: false,
    success: function(msg)
    {
        $("#results").append("The result =" + StringifyPretty(msg));
    }
});