2013-02-22 14 views
1

我在jQuery AJAX POST方法中调用了Rest服务。我需要在头中传递两个值。 Firefox既没有将标题值传递给服务也没有调用REST服务。
我的jQuery代码在jQuery AJAX POST中传递标头值firefox

var postCall = function() { 
    $.support.cors = true; 
    var HFAssoRefId = document.getElementById('MainContent_HFAssoRefId').value;  
    var Input = { 
     AssoRefId: HFAssoRefId 
    }; 
    alert(JSON.stringify(Input)); 
    var url = document.URL; 
    var name = "samuel";   
    $.ajax({ 
     type: "POST", 
     beforeSend: function (xhr) { 
      xhr.setRequestHeader("PartnerName", name); 
      xhr.setRequestHeader("URL", url); 
     }, 
     url: "http://localhost:40680/Service.svc/TokenInsertion", 
     data: JSON.stringify(Input), 
     contentType: "application/json", 
     dataType: "json", 
     success: function (response) { 
      alert(response); 
     }, 
     error: function (xhr, status, error) {    
      alert(status); 
     } 
    }); 
} 


是否有任何其他的方法来传递jQuery的AJAX的标头值。它可以在Internet Explorer 8中正常工作。如何使它与Firefox浏览器兼容?

我尝试了其他方法发布像这样。 方法1:

$(document).ready(function() { 
    $("#button").click(function(){ 
     var name1 = "samuel"; 
     var url1 = document.URL; 
     $.post('http://localhost:41855/IntegrationCheck/Default.aspx', { 
      name : name1, 
      url : url1 
     },function (data) { 
      alert(data); 
     }); 
    }); 
}); 
在AJAX的jQuery

和方法2:

function setHeader() { 
    var xhr = new XMLHttpRequest(); 
    xhr.open("POST", url, true); 
    xhr.setRequestHeader('Accept', ''); 
    xhr.setRequestHeader("Content-Type", "application/json"); 
    xhr.setRequestHeader("Accept", "text/xml;application/json"); 
    xhr.setRequestHeader("PartnerName", name); 
    xhr.setRequestHeader("URL", url); 
} 

但标头值就不传递和该服务没有在Firefox调用。 任何建议..

+0

你确实有几个语法错误在你的第一个代码片段,但他们应该做出它不在IE中工作,所以我假设他们只是在这里输入代码的工件。 – 2013-02-22 08:07:56

+0

'AssoRefId:HFAssoRefId后面的逗号,' 缺少括号来关闭'.ajax({''''关闭后'} – 2013-02-22 08:08:53

+0

它不能解释为什么其他两个查询不起作用:) – 2013-02-22 08:13:24

回答

1

我用来按照以下的方法来设定请求头。如果适合你,请尝试。

[脚本]

$("#element").ajaxSuccess(function (evt, request, settings) { 
    $('.Status').html(request.getResponseHeader("Status")); 
    }); 

[查看]

<h2>Status:</h2><h2 class="Status" style="color:Red;"> 

[控制器]

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Save(Order orders) 
    { 
     string status = string.Empty; 

     if (orders != null) 
     { 
      OrderRepository.Update(orders); 
      status = "Updated"; 
     } 

     Response.AddHeader("Status", status);    
     return data.GridActions<EditableOrder>(); 
    } 

Response header

+0

它很好。但我只需要在客户端传递标题值。 – kk1076 2013-02-25 10:34:42