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,但曾经遇到过这个问题并使用 stringify 正确传递数据。

于 2013-09-20T16:47:50.650 回答