为什么JavaScript中的数组索引会以字符串形式发送给Ruby?而不是得分[0],我访问第一个元素作为分数[“0”]。我还访问我的实例变量而不是score.candidate_id,而是作为得分[“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
答案 0 :(得分:1)
尝试在发送参数之前对其进行字符串化。尝试使用firebug,看看如何使用您当前的代码发送请求。这基本上是因为jQuery将JSON中的那些键作为表单元素的名称,并且它会将其视为表单中有一个元素。
尝试像这样发送:
$.ajax({
type : "POST",
url : 'submit.com',
dataType: 'json',
contentType: 'application/json',
data : JSON.stringify(results)
});
在我的应用程序中,我不使用stringify,但曾遇到过此问题,并使用stringify正确传递数据。