2010-07-12 79 views
0

我的後端是我的Rails服務器,它將JSON數據發送到我的前端。在前端,我使用了處理我的JSON數據並顯示它的一些javascript和jQuery。
現在,用戶可以根據顯示的數據輸入一個數字。
因此,根據用戶的輸入,對先前收到的JSON數據進行一些更改,並將其作爲正確編碼的JSON發送回我的後端。在rails中幫助JSON

我的問題是我如何在服務器上處理這個JSON數據並存儲用戶填充的輸入?

+0

爲什麼你必須將它作爲JSON發回?將JSON轉換爲http POST請求,然後發回。 Rails已經知道如何做到這一點,我非常確定它在jQuery中並不太棘手。 – thomasfedb 2010-07-12 10:38:49

+0

公開JSON API可以提供一個更爲一般的界面,而不僅僅是迎合基於瀏覽器的客戶端界面,有時候只是爲了支持一種類型,特別是如果瀏覽器需要嚴格基於AJAX的界面時,這樣做很方便。 – bjg 2010-07-12 11:37:34

回答

1

不知道爲什麼你需要將數據發回的JSON因爲Rails可以只處理表單數據通常,作爲thomasfedb說。但是,如果您確實需要,可以使用jQuery serializeArray方法,然後從數組快速轉換爲JSON。請參閱以下內容:

http://api.jquery.com/serializeArray/#comment-47479466

如果你沿着這條路走下去,你可以使用stringify方法JSON2.js從你的對象創建有效的JSON數據。

http://www.json.org/js.html


編輯:

對不起,只是意識到你已經有了那麼遠!應該正確地閱讀這個問題。

您可以使用此JSON ruby implementationparse JSON數據:

JSON.parse(json_data, {:symbolize_names => true}) 

,然後只用了save方法從ActiveRecord::Base以保存記錄。

+0

@joecardon: - 我有一些缺失的鏈接。我從來沒有這樣做過,即將數據以JSON格式發送回服務器。我嘗試了您的命令,但得到以下錯誤: JSON。parse({「solutions」:[{「name」:「I」},{「name」:「On」}],「features」:[{「name」:「Composition」}])) 給我錯誤: 語法錯誤:編譯錯誤 (IRB):4:哈希 (IRB)奇數列表:4:語法錯誤,意想不到的 ':',期望 '}' BUT中,JSON-數據是有效的。 ..我通過它http://www.jsonlint.com/ json解析器並返回有效的json。 – 2010-07-13 06:09:26

+0

您需要將JSON數據從表單傳遞到JSON.parse作爲字符串: JSON.parse('{「key」:「value」,「another_key」:23}',{:symbolize_names => true} ) – joecorcoran 2010-07-13 11:28:53

1

讓我們假設你已經使用JQuery.post()將數據與'JSON'

一個dataType然後在你的控制器,你可以做到這一點發送到服務器:

MyController << ApplicationController 

    def my_action 
    @data = params[:data] // client data available as a Ruby Hash object 

    // Process data into @result (for example) 

    respond_to do |format| 
     format.json { render :json => @result.to_json } 
    end 
    end 

end 

或者你可以離開了render並提供一個視圖(稱爲my_action.json.erb),您可以在其中格式化JSON響應。

+0

- 我無法理解你在說什麼。我的問題是,我以某種方式處理用戶輸入,然後必須將該數據發送回服務器,以便我可以再次處理它並採取相應的行動。 我將數據發送到服務器的數據格式是JSON。 我正在客戶端進行jQuery.post調用。 – 2010-07-13 05:56:50

+0

@銀匙。我想我明白這一點。我所展示的是大綱服務器端邏輯,用於處理傳入的JSON並將JSON迴應給客戶端。在這裏有你需要的東西嗎? – bjg 2010-07-13 10:09:03