2012-10-24 51 views
8

我環顧四周,嘗試了許多不同的方法,但似乎無法將實際數據傳遞給我的控制器功能。如何使用AJAX和JQuery實現與JSON數據的PUT調用?

下面是一些代碼:

 var URL = "/Timesheet/Timesheet/UpdateEntry"; 

     var dataObject = { 'newWeekEntry': newEntry, 'oldWeekEntry': oldEntry }; 

     alert(JSON.stringify(dataObject)); 

     $.ajax({ 
      url: URL, 
      type: 'PUT',  
      data: JSON.stringify(dataObject), 
      dataType: 'json', 
      success: function(result) { 
       alert("success?"); 
      } 
     }); 

newEntryoldEntry都是對象。

alert線路輸出這個(有一些性能刪除,只是爲了簡潔):

{"newWeekEntry":{"MondayHours":2,"TuesdayHours":2,"WednesdayHours":5,"ThursdayHours":5,"FridayHours":"4","SaturdayHours":0,"SundayHours":0},"oldWeekEntry":{"MondayHours":2,"TuesdayHours":2,"WednesdayHours":5,"ThursdayHours":5,"FridayHours":2,"SaturdayHours":0,"SundayHours":0}} 

當調試我的控制器行動(「UpdateEntry」),這兩個參數都充滿了TimesheetEntry類的默認參數(0)。

我是否正確地通過這個?

+0

你能對擴大你的意思是當你說「當我調試我的控制器行動(」 UpdateEntry「),這兩個參數填充了TimesheetEntry類的默認參數(0)。「?你在服務器上使用什麼(即Rails),你如何將服務器上的JSON轉換爲TimesheetEntry? – InPursuit

+2

只有在從服務器獲取數據時才使用'dataType'屬性。將數據發送到服務器時,應該將'contentType'設置爲'application/json'。 – InPursuit

+0

謝謝InPursuit!這解決了它。你想添加這個作爲答案,我可以接受嗎? – Rail24

回答

26

僅當您從服務器獲取數據時纔會使用dataType屬性。將數據發送到服務器時,應該將contentType設置爲application/json

3

使用標題:{"X-HTTP-Method-Override": "PUT"}並覆蓋POST請求類型。它適用於我的項目...

$.ajax({ 
    type: 'POST', // Use POST with X-HTTP-Method-Override or a straight PUT if appropriate. 
    dataType: 'json', // Set datatype - affects Accept header 
    url: "http://example.com/people/1", // A valid URL 
    headers: {"X-HTTP-Method-Override": "PUT"}, // X-HTTP-Method-Override set to PUT. 
    data: '{"name": "Dave"}' // Some data e.g. Valid JSON as a string 
}); 
+0

爲什麼使用'POST'作爲類型,但在頭中覆蓋它? – Mese

+0

擡頭看,你會看到,作爲一種類型不應該如此工作 – user1524615

+0

如何獲得您的控制器? – ahmedbhs

0
$.ajax({ 
     url: window.serverUrl + 'student/event/' + eventId, 
     type: 'put', 
     data: JSON.stringify(data), 
     headers: { 
      'x-auth-token': localStorage.accessToken, 
      "Content-Type": "application/json" 
     }, 
     dataType: 'json' 
}) 

這爲我工作

相關問題