2012-08-30 73 views
0

在我的應用程序中,我有這段代碼。我注意到,該內容類型未能發送。你知道如何強制發送它嗎?ContentType無法發送

$.ajax({                 
     crossDomain: true, 
     type: 'GET', 
     url: 'http://serv/services/rest/contact/' + localStorage.getItem('contact'), 
     callback: 'jsonpCallback', 
     jsonpCallback: 'jsonpCallback', 
     jsonp: '_jsonp', 
     **contentType: 'application/json',** 
     dataType: 'jsonp json', 
     timeout : 10000, 

     success: function(data){ 
      $("#name").attr("value", data.response.label); 
     }   }, 
     error: function (xhr, ajaxOptions, thrownError){ 
      alert("Status: " + xhr.status + ", Ajax option: " + ajaxOptions + ", Thrown error: " + thrownError); 
     }, 
    }); 

我的請求頭是:

Accept:*/* 
Accept-Charset:ISO-8859-2,utf-8;q=0.7,*;q=0.3 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4 
Connection:keep-alive 
Cookie:JSESSIONID=F0ED33279488888888B35A731B40EE0C; oam.Flash.RENDERMAP.TOKEN=789456321 
Host:serv 
User-Agent:Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.1 (KHTML, like Gecko)     Chrome/21.0.1180.83 Safari/537.1 

正如我所說的,則contentType丟失。我錯過了什麼?

感謝您的幫助。

回答

0

如果您要發佈數據,則只能設置Content-Type。所以,你需要改變:

type: 'POST' 

您也許正在尋找告訴你,在響應接受什麼樣的服務器嘗試:

accepts: 'application/json' 

+0

謝謝您的回答。我需要做一個跨域請求,所以我必須使用JSONP,它需要輸入:get。我將簡單地改變一個服務器端不要求contenttype。 –

+0

沒問題希望你把它排序。 :) – Scott

0

你沒有看到這裏jQuery Ajax API瞭解更多信息需要內容類型的請求。

更改dataTypejson這樣的:

$.ajax({ 
    type: "GET", 
    url: 'http://serv/services/rest/contact/' + localStorage.getItem('contact'), 
    dataType: "json", 
    success: function(data){ 
     $("#name").attr("value", data.response.label); 
    }, 
    error: function (xhr, ajaxOptions, thrownError){ 
     alert("Status: " + xhr.status + ", Ajax option: " + ajaxOptions + ", Thrown error: " + thrownError); 
    } 
}); 

而是返回數據爲JSON

我沒有注意到你的crossDomain: true,,對於你的工作你需要閱讀Cross-Origin Resource Sharing,更確切地說,添加這個標題Access-Control-Allow-Origin: http://www.example.com作爲迴應。

至於PHP的例子:

header('Access-Control-Allow-Origin: http://www.example.com'); 

舉例.htaccess

<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin "http://www.example.com" 
</IfModule> 
+0

謝謝你的回答。我需要使用JSONP而不是JSON。我已經處理了跨域,問題出現在服務器響應中。服務器需要的內容類型,並根據@scott說,我無法發送它。 –