2016-08-03 204 views
0

我嘗試使用jQuery AJAX使用REST API發佈數據。我的代碼如下,回調HTTP 400錯誤

$.ajax({ 
    url: 'myurl', 
    type: 'POST', 
    contentType: 'application/json; charset=utf-8', 
    data: JSON.stringify(jsonData), 
    dataType: 'jsonp', 
    success: function(responseData, textStatus, jqXHR) { 
     if (responseData.result == "true") {    
      $.mobile.changePage("#registersuccess",{transition:"slide"}); 
     } else { 
      alert("kayıt başarısız"); 
     } 
    } 
}); 

我用Explorer開發人員工具進行監視。我收到此錯誤消息:

HTTP400:BAD REQUEST - 由於語法無效,請求無法由服務器處理。
GET - HTTP:爲MyService回調= jQuery111306711937631005869_1470230696599 & [{ 「Name」: 「」, 「phoneNumber的」: 「」, 「密碼」: 「」}] & _ = 1470230696600

這是什麼意思:&_=1470230696600

回答

0

datatypejsonp更換爲json。 你可以閱讀更多關於jsonjsonp這裏What are the differences between JSON and JSONP?

+0

當我從JSON更改爲JSONP,我採取跨域錯誤。 –

+0

您可以指定客戶端和服務器是否在同一個域上? 如果他們不是,你應該考慮在你的服務器上啓用CORS。 – Poly

+0

不,我的服務器和客戶端不一樣的域。我正在使用亞馬遜Linux服務器,我如何啓用,除了我添加了我的jquery ajax代碼緩存:true;我得到了這個錯誤信息:GET - http:MyService?callback = jQuery111306711937631005869_1470230696599&[{「name」:「」,「phoneNumber」:「」,「password」:「」}] –

0

見jQuery的文檔我解決問題添加服務器站點代碼,

public class CORSFilter 

實現ContainerResponseFilter {

public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) 
     throws IOException { 

    MultivaluedMap<String, Object> headers = responseContext.getHeaders(); 

    headers.add("Access-Control-Allow-Origin", "*"); 
    //headers.add("Access-Control-Allow-Origin", "http://podcastpedia.org"); //allows CORS requests only coming from podcastpedia.org  
    headers.add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");   
    headers.add("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, X-Codingpedia"); 
} 

}