0

私のアプリケーションはjson経由で構造を送信する必要があり、その機能は正常に動作します:

function send_json()
{
    var formData = form2object('myForm');
    var json_data = JSON.stringify(formData, null, '\t');
    $.post("", json_data);
}

json_data を作成し、post で送信します。しかし、このデータを別の側でキャッチする方法がわかりません。助けてもらえますか? この構造を利用して、何らかのアクションを実行する必要があります。

データを送信するとjsonを取得しました:

{ "type": "test", "ttl": "1", "amount": "1", "rules": { "rule1": "1", "value1": "4444", "stackcount1": "1", "rule2": "2", "value2": "333", "stackcount2": "2" }}

コントローラーで私はこれを書きました:

class AdminController < ApplicationController
  def index
    @json_string = params[:amount]
    if !@json_sting.nil?
      @json_string = JSON.parse(params[:amount])
    end
  end
end

ビュー(haml)で私は書いた:

=@json_string

うまくいきません!

しかし、wireshark は次のことを示しています。

POST /admin/ HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1
Accept: */*
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://localhost:3000/admin/
Content-Length: 192
Cookie: _GiftSenderTool_session=BAh7BzoQX2NzcmZfdG9rZW4iMTVyNVJCMTBvcGpKSk5OcFN4bW15YVlpRlF1TUNtb1gwZkY0bTRuRHlsNnM9Ig9zZXNzaW9uX2lkIiU4ZjFjNTNjNTY0MTQ1MGExNmFiODcxZGEyYzU5ZTkxMg%3D%3D--f21bf3b96edc3bc551c8de68acc6da17685d58b4
Pragma: no-cache
Cache-Control: no-cache

{
."type": "test",
."ttl": "1",
."amount": "1",
."rules": {
.."rule1": "1",
.."value1": "4444",
.."stackcount1": "1"
.},
."authenticity_token": "n3B6D/Km9zOgOzlosK/OLHyTCDLk3MyCTlTBinfQcnY="
}

データを取得できないということです。

4

1 に答える 1

1

RailsコントローラーアクションでJSONオブジェクトをキャッチする必要があります。JSON 文字列が次のようになっている場合:

{ "user": { "id": 1, "name": "Tom" } }

次に、次のようにします。

require "json"
...
def some_action
  user = JSON.parse(params[:user])
  puts "User id is #{user[:id]}"
  ...
end
于 2012-08-10T14:32:46.437 に答える