【问题标题】:Ajax returns error, but it worksAjax 返回错误,但它可以工作
【发布时间】:2013-10-04 19:46:39
【问题描述】:

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

【问题讨论】:

  • 您是否在控制台中查看了从服务器返回的内容?
  • 在您的错误处理程序中,尝试 console.log(arguments) 并查看记录到您的 JavaScript 控制台的内容。此外,请检查浏览器开发工具的网络选项卡,看看请求是否符合您的预期。
  • 我猜是解析错误?
  • 如果您在控制台中看到响应,您的响应很可能不是有效的 json。
  • 请修复 url: 'moves' 到 url: 'game/moves'

标签: javascript jquery ruby ajax sinatra


【解决方案1】:

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

如您所见,我没有将“异步”设置为 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);
        }
      });
    }
    
  • App.rb

    post '/game/moves' do
      if params[:square]
        "It works !"
      end
    end
    

【讨论】:

    猜你喜欢
    • 2021-08-17
    • 1970-01-01
    • 2016-03-21
    • 2018-02-10
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多