2013-03-12 92 views
2

我一直在使用谷歌搜索,但我似乎無法得到正確的設置,通過我在谷歌上看到的東西我最終與此:如何通過AJAX發送對Ruby on Rails的請求

var dataString = $('#markerform').serialize(); 
     var id = $('#route_id').val() 
     $.ajax({ 
      type: 'POST', 
      url: '/routes/'+id, 
      data: { "_method":"put", dataString}, 
      dataType: "JSON", 
      success: function(data) { 
       console.log(data); 
      } 
     }); 

這對我的路線控制器

def update 
    @route = Route.find(params[:id]) 
    respond_to do |format| 
     if @route.update_attributes 
      format.html 
      format.json { render text: "Done" } 
     else 
      format.json { render text: "Bad" } 
     end 
    end 
end 

但我結束了這個螢火錯誤:

SyntaxError: invalid object initializer 
[Break On This Error] 

data: { "_method":"put", dataString}, 

我可能ç依靠這個,所以我可以通過這個應用程序獲得一些成功。謝謝。

+0

'類型:「PUT''應該工作 – jvnill 2013-03-12 06:51:17

+0

@jvnill但我讀這不是所有的瀏覽器兼容的,我想確保我整個兼容:)全路? – Datsik 2013-03-12 06:51:42

+0

不確定。但爲了解決您的錯誤,您應該將附加數據附加到序列化屬性。如果我沒有記錯,dataString將是一個字符串,所以只需添加到_method像'dataString +「&_method = put'',只是把它傳遞給數據,如'數據:dataString' – jvnill 2013-03-12 07:00:09

回答

2

試試這個(※使用的serializeArray代替serialize):

$.ajax({ 
     type: 'PUT', 
     url: '/routes/'+$('#route_id').val(), 
     data: $('#markerform').serializeArray(), 
     dataType: "JSON", 
     success: function(data) { 
      console.log(data); 
     } 
    }); 
0

試試這個

var dataString = $('#markerform').serialize(); 
     var id = $('#route_id').val() 
     $.ajax({ 
      type: 'PUT', 
      url: '/routes/'+id, 
      data: dataString, 
      dataType: "JSON", 
      success: function(data) { 
       console.log(data); 
      } 
     }); 
+0

但我讀了它並不是所有的瀏覽器兼容,我想確保我在整個過程中兼容:)? – Datsik 2013-03-12 06:53:44

+0

PUT方法採用XHTML2.0版本。但是你可以通過$ .ajax傳遞它,因爲它只是作爲一個參數,你的服務器將像現在一樣處理方法類型PUT。 – 2013-03-12 07:29:59

+0

但是我收到了我的帖子底部列出的錯誤,我想我的數據格式是錯誤的:任何想法是什麼造成的? – Datsik 2013-03-12 07:33:18

-1

它在How do I PUT data to Rails using JQuery已回答了。基本上,Rails可以通過執行POST來執行PUT調用(&任何其他不受支持的調用),但是會添加一個「_method」參數,其值爲「PUT」。