2014-05-09 41 views
9

我不得不XML发送到服务器Authorization头MUSTPOSTJQuery的AJAX头授权后

现在我有两个选择。

  1. 当我使用dataType ='jsonp'时,它总是变成GET而不是POST。另外我的数据必须是XML。

     var request = {}; 
         request.type = 'POST'; 
         request.contentType = 'application/jsonp; charset=utf-8'; 
         request.dataType = 'jsonp'; 
         request.data = JSON.stringify(this.data); 
         request.url = this.url; 
         request.beforeSend = function (xhr) { 
          xhr.setRequestHeader("Authorization", "Basic "); 
         }; 
    
         request.processData = false; 
         $.ajax(request); 
    
  2. 但没有dataType ='jsonp'我根本没有Authentication头。以下代码仅适用于Chrome。

    var request = {}; 
        request.type = 'POST'; 
        request.contentType = 'text/xml'; 
        request.dataType = 'xml'; 
        request.data = this.data; 
        request.url = this.url; 
        request.beforeSend = function (xhr) { 
         xhr.setRequestHeader("Authorization", "Basic "); 
        }; 
    
        request.processData = false; 
        $.ajax(request); 
    

是的,我知道有很多在计算器上类似的问题,我读过几十人,但仍然没有找到正确的答案。

+0

那么你尝试过什么,没有工作,张贴一些代码! – adeneo

回答

8

修改标题中出现beforeSend方法,例如:

$.ajax({ 
    url: url, 
    method: "POST", 
    dataType: "json", 
    crossDomain: true, 
    contentType: "application/json; charset=utf-8", 
    data: JSON.stringify(data), 
    cache: false, 
    beforeSend: function (xhr) { 
     /* Authorization header */ 
     xhr.setRequestHeader("Authorization", "Basic " + Utils.getUsernamePassword()); 
     xhr.setRequestHeader("X-Mobile", "false"); 
    }, 
    success: function (data) { 

    }, 
    error: function (jqXHR, textStatus, errorThrown) { 

    } 
}); 
+1

是的,我已经做到了这一点,但是当我设置dataType =“json”时,它变成了GET。 我做错了什么? – user3392045

+0

可以分享你的代码吗? –

+0

查看更新后的问题 – user3392045