0

Ajax と Sinatra を使用してアプリケーションを実行しています。app.rb ファイルに POST パラメータを送信したいと考えています。

  • 私の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 パラメータを正常に取得したことがわかります。うまくいきますが、コードの「成功」部分に入ることができず、代わりにエラー部分に取り掛かります。

また、json 型を html 型に置き換えようとしましたが、app.rb ファイルの戻り値を削除しましたが、役に立ちませんでした (まったく同じエラー)。

4

1 に答える 1

0

私は実用的な解決策を見つけました。ここで、「うまくいきました!」というメッセージを取得して、パラメータを正常に取得します。アラート。それが私が欲しかったものでした。

お気づきのとおり、「async」を false に設定していません。なぜそうしなければならないのか、なぜそうしないとうまくいかないのか、私にはわかりません。false に設定されていてもかまいませんが、機能するため、誰かが考えられる理由を教えてくれれば、それでも助けになります。ありがとう。

完全なコードは次のとおりです (パラメーター xi と yi が必要なため、関数 send は目立たない方法で (1 行の html onclick を使用して) 呼び出されます)

  • 景色

    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
    
于 2013-10-04T11:46:39.883 に答える