Ajax返回错误,但它有效

时间:2013-10-03 17:09:52

标签: javascript jquery ruby ajax sinatra

我正在使用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文件中的返回值,但无效(完全相同的错误)。

1 个答案:

答案 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