0

我正在使用 Ajax 和 Sinatra 运行应用程序。我想将 POST 参数发送到我的 app.rb 文件中。

  • 我的应用程序.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 参数。所以它有效,但我无法进入代码的“成功”部分,而是进入错误部分。

我还尝试将 json 类型替换为 html 类型,并删除了我的 app.rb 文件中的返回值,但无济于事(完全相同的错误)。

4

1 回答 1

0

我找到了一个可行的解决方案。在这里,我成功地检索到“它有效!”的参数。警报。这就是我想要的。

如您所见,我没有将“异步”设置为 false。我不知道为什么我必须这样做,也不知道为什么我不这样做时它不起作用。我不介意它是否设置为 false,因为它有效,但如果有人能告诉我可能的原因,它仍然会帮助我。谢谢。

这是完整的代码(函数 send 以一种令人讨厌的方式调用(使用单行 html onclick),因为我需要参数 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);
        }
      });
    }
    
  • 应用程序.rb

    post '/game/moves' do
      if params[:square]
        "It works !"
      end
    end
    
于 2013-10-04T11:46:39.883 回答