2017-01-17 25 views
-2

これは、ajaxリクエストでサーバーにデータを送信する正しい方法ですか?ajaxでデータを送信

var xhttp = new XMLHttpRequest(); 
      xhttp.onreadystatechange = function() { 
      if (this.readyState == 4 && this.status == 200) { 
       alert(response); 
      } 
      }; 
      xhttp.open("GET", "https://myurl/", true); 
      xhttp.send(JSON.stringify("{ action: 'search', mode: question}")); 

私はこのエラーを取得するので405 (Method Not Allowed - Action not found)

+1

私はこのコードで5つの別々の問題を見ることができますが、一般的なケースでは間違っていると考えられます。しかし、あなたの質問は、 "このWebサービスの期待に応えるためにHTTPリクエストをどのようにフォーマットする必要がありますか?" ...あなたはそのサービスについて何も教えてくれなかったので、私たちはそれが何を期待しているか知る方法がありません。 – Quentin

答えて

0

いいえ、それにはいくつかの問題があります。

  1. alert(response);response変数がないので失敗します。おそらくalert(xhttp.responseText)が必要です。

  2. あなたはGETを行っていますが、POST本体を送信しようとしています。あなたはそれをすることはできません。 GET情報は、本文ではなくURLにあります。

  3. あなたはJSONを送信していますが(試してみます)、JSONとして識別していません。

  4. あなたはその仕事が JSON文字列に物事を変換することであるとして、通常あなたは、オブジェクトではなく、文字列を渡すと思いますJSON.stringify、へ文字列を渡しています。

(サーバがクライアントからJSONを受け入れるように設定されていること、など)あなたはPOSTを行うことを意味と仮定すると、あなたが本当にJSONを送りたいんし、最小限の変更は次のようになります。

var xhttp = new XMLHttpRequest(); 
xhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     alert(xhttp.responseText);         // 1 
    } 
}; 
xhttp.open("POST", "https://myurl/", true);       // 2 
xhttp.setRequestHeader("Content-Type", "application/json");   // 3 
xhttp.send(JSON.stringify({ action: 'search', mode: question}));  // 4 

questionはその範囲内の変数であると仮定しています。

+0

私はまだこのエラー「405(メソッドは許可されていません - アクションが見つかりません)」を受け取りました。 –

+0

@af_inb:Quentinは言ったように、これは、私たちが少しの情報を持って解決できる問題を修正します。 –

関連する問題