我正在使用Ajax和Sinatra运行应用程序。我想将POST参数发送到我的app.rb文件中。
我的app.rb
post '/game/moves' do
@square = params[:square]
puts @square
content_type :json
{ :success => 'Data successfully transmitted' }.to_json
end
我的观点
$.ajax({
url: 'moves',
data: {square:square},
type: 'POST',
dataType: 'json',
success: function() {
alert("Success");
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest + textStatus + errorThrown);
}
});
它返回警报“[object Object] error”,但在我的控制台上,我看到我成功检索到了POST参数。所以它可以工作,但我无法进入代码的“成功”部分,而是我正在处理错误部分。
我还尝试用html类型替换json类型,并删除app.rb文件中的返回值,但无效(完全相同的错误)。
答案 0 :(得分:0)
我找到了一个有效的解决方案。在这里,我成功地找到了“它有效!”之上的参数。警报。这就是我想要的。
您可以注意到,我没有将“async”设置为false。我不知道为什么我必须这样做,也不知道为什么我不这样做。我不介意它是否设置为假,因为它有效,但如果有人可以告诉我可能的原因,它仍然会帮助我。感谢。
这是完整的代码(函数send以一种突兀的方式调用(带有单行html onclick),因为我需要params xi和yi)
视图
function send(xi,yi) {
info = [];
info[0] = xi;
info[1] = yi;
$.ajax({
type: 'POST',
url: 'moves',
dataType: 'text',
async: false,
data: {square:info},
success: function(token) {
alert(token)
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest, textStatus, errorThrown);
}
});
}
App.rb
post '/game/moves' do
if params[:square]
"It works !"
end
end