1

JavaScript の配列インデックスが文字列として Ruby に送信されるのはなぜですか? スコア[0] の代わりに、スコア["0"] として最初の要素にアクセスします。インスタンス変数にも、score.candidate_id としてではなく、score["candidate_id"] としてアクセスします。どうすればこれを機能させることができますか?

コード: 私の JQuery は、この関数を介して AJAX 経由でスコアを送信します。

$.post("submit.com", {scores: results}, function(data) {console.log(data)}, "json")

resultsで構成される配列はどこですか

{judge_id: x, category_id: y, candidate_id: z, score: s}

Ruby バックエンド (Sinatra で動作しない)

post '/submit' do

    woot = JSON.parse(params[:scores])

    woot.each do |new_score|
        Score.new({
            score: new_score["score"],
            pageant_id: Pageant.active.id,
            candidate_id: new_score["candidate_id"],
            judge_id: new_score["judge_id"],
            category_id: new_score["category_id"]
            }).save
    end

    params[:scores]["1"].inspect.to_json
end
4

1 に答える 1

1

パラメータを送信する前に、パラメータを文字列化してみてください。firebug を使用してみて、現在のコードでリクエストがどのように送信されるかを確認してください。これは基本的に、jQuery が JSON 内のこれらのキーをフォーム要素の名前として受け取り、フォーム内に要素があるかのように見なすために発生します。

次のように送信してみてください:

$.ajax({
 type : "POST",
 url :  'submit.com',
 dataType: 'json',
 contentType: 'application/json',
 data : JSON.stringify(results)
 });

私のアプリではstringifyを使用していませんが、この問題が1回発生し、stringifyを使用してデータを適切に渡しました。

于 2013-09-20T16:47:50.650 に答える