2013-04-20 167 views
0

我想發送一個JSON對象使用jquery中的$ .ajax()與一個POST方法,從我的純html頁面,到一個數據端點endpoint.the響應標題在火災bug給我「內部服務器錯誤」,請任何一個告訴我,我在這裏做錯了: HTTP/1.1 500錯誤 X-Backside-Transport:失敗失敗 內容類型:文本/ xml 連接:接近

我的jQuery代碼看起來是這樣的:

$(document).ready(function() { 
      $('#btn_submitcallback').click(function() { 

       //add the values we need for the API to an object 
       var objCallbackData = new Object; 
       var d = new Date(); 
       var dat = d.getDate(); 
       var mon = d.getMonth() + 1; 
       var year = d.getFullYear(); 
       var todayDate = dat + "/" + mon + "/" + year; 
       alert("inside submit callback"); 
       //build the object 
       objCallbackData.Store_Code = "POO726"; //$('#sel_title').val(); 
       objCallbackData.Title = $('#sel_title').val(); 
       objCallbackData.First_Name = $('#txt_firstname').val(); 
       objCallbackData.Last_Name = $('#txt_surname').val(); 
       objCallbackData.House_Number = $('#txt_houseno').val(); 
       objCallbackData.Street = $('#txt_streetname').val(); 
       objCallbackData.City = $('#txt_city').val(); 
       objCallbackData.Post_Code = $('#txt_postcode').val(); 
       objCallbackData.Email = $('#txt_email').val(); 
       objCallbackData.Phone_Number = $('#txt_phone').val(); 
       objCallbackData.Project_Type = "Bathroom"; 
       objCallbackData.Callbacktime_Morning = "Y"; 
       objCallbackData.Callbacktime_Afternoon = "Y"; 
       objCallbackData.Callbacktime_Evening = "N"; 
       objCallbackData.Callbacktime_Weekend = "N"; 
       objCallbackData.Callbacktime_Weekday = "Y"; 
       objCallbackData.Helparea_Measuring = "Y"; 
       objCallbackData.Helparea_Designing = "N"; 
       objCallbackData.Helparea_Usingspaces = "N"; 
       objCallbackData.Helparea_Services = "N"; 
       objCallbackData.Helparea_Productinfo = "N"; 
       objCallbackData.Status = "O"; 
       objCallbackData.Date = todayDate; 

       // alert(objCallbackData.date); 


       //turn the object in to a JSON string 
       var myJson = JSON.stringify(objCallbackData); 
       alert(myJson); 


       $.ajax({ 
        type: 'POST', 
        url: 'http://xb629050-s1.uk.b-and-q.com:9340/api/callback', 
        contentType: 'application/json; charset=utf-8', 
        data: myJson, 
        dataType: 'json', 
        success: function() { 
         alert("good"); 
        }, 
        error: function (xhr, status) { 
         switch (status) { 
          case 404: 
           alert('File not found'); 
           break; 
          case 500: 
           alert('Server error'); 
           break; 
          case 0: 
           alert('Request aborted'); 
           break; 
          default: 
           alert('Unknown error: ' + xhr.statusText); 
         } 
        } 
       }); 


      }); 
     }); 
+0

嘗試刪除從'contentType' – 2013-04-20 10:44:39

+0

了'charset'試圖消除字符集..no快樂!! :( – user2301878 2013-04-20 11:14:19

回答

0

阿賈克斯不支持跨域REQ uest。 您需要爲此使用jsonp方法。

也看到這個

How to make cross domain ajax call using jQuery JSONP

+1

-1:JSONP不與HTTP工作/ POST – SuperSaiyan 2013-04-20 11:12:31

+0

試過AJAX快捷$。員額(! )在jquery中,數據到達端點但不是JSON。任何想法如何強制內容類型的$ .post()方法,因爲$ .ajax()不起作用? – user2301878 2013-04-20 11:16:08

+0

@ user2301878'$ .post ''是'$ .ajax'的一個簡便方法,如果不能用'$ .ajax'完成,不能用'$ .post'完成,不要說你不能做你想做的事情。 。只是說'$ .post'不會幫助 – charlietfl 2013-04-20 11:29:06

0

@Thrustmaster是正確的,你不能使用跨域異步操作POST請求需要使用GET,因爲引擎蓋下將加載腳本標籤內容。

試試這個:

$.getJSON("http://xb629050-s1.uk.b-and-q.com:9340/api?callback=?", 
    objCallbackData, processServerResponse); 

其中processServerResponse是函數,將獲取數據後,被稱爲:

function processServerResponse(data) { 
// processing data from server 
} 

請參閱例如「免費geoIP'服務。嘗試瀏覽:http://freegeoip.net/json/?callback=handleResponse

PS一些摘自維基:

..網頁從server1.example.com服務無法正常連接 或比server1.example.com其他服務器進行通信。幾個 例外包括HTML元素。利用元素的開放 策略,一些頁面使用它們來檢索 JavaScript代碼,該代碼對來自其他來源的動態生成的JSON格式的 數據進行操作。這種使用模式被稱爲JSONP。 JSONP請求不是檢索JSON,而是任意JavaScript代碼。 它們由JavaScript解釋器進行評估,而不是由JSON 解析器進行分析。

+0

感謝您的答覆@ vladimir77.使用上述方法,數據瀏覽器使用HTTP GET獲取常規表單提交,如下所示:但是我的數據端點端點數據採用JSON格式,使用HTTP POST。使用數據轉換爲datapower不是JSON格式 – user2301878 2013-04-22 13:31:39

+0

感謝您回覆@ vladimir77.使用上述方法,數據瀏覽器使用HTTP GET獲取常規表單提交 但我的數據端點端點期望JSON格式的數據與HTTP POST.Sorry,但我是一個JQuery新手。請你能提出一些建議,可以幫助我用JSON格式的HTTP POST發送來自JQuery UI的數據。 – user2301878 2013-04-22 13:39:45

+0

不客氣:) @ user2301878主要關心的是你發送異步請求到另一個域,不是嗎? jquery(和任何其他客戶端庫)是一種無法打破跨域限制的工具,因爲瀏覽器禁止提交。可能是你嘗試通過服務器進行跨域請求(使用WCF實例或WebRequest) - 您向服務器發送POST請求並將其傳播到數據端點端點? – vladimir77 2013-04-22 14:06:22