web-dev-qa-db-ja.com

jQuery AJAX / POSTはデータをPHP

だから私はしばらくこの問題を抱えており、このトピックには無数の質問があることを知っています。可能な解決策をすべて試しましたが、まだ機能していません。

これは私の例では機能しない最も単純な例です

jQuery:

_$.ajax({
    url: "ajax/add-user.php",
    type: "POST",
    data: {name: 'John'},
    success: function(data){
        console.log(data);
    }
});
_

PHP

_echo json_encode($_POST);
_

それでおしまい。応答として常に空の配列を返します。 _data:_に対してserialize()で試しましたが、応答は常に空です。エラーは一切発生せず、投稿された値を取得する必要がある場合は空の配列になります。

たとえば、phpでechoのハードコードされた変数を取得しようとすると、それらを取得しますが、_$_POST_および_$_GET_は機能しません。

問題を特定する方法の解決策や方法はありますか?

ありがとうございました。

編集/解決策

わかりましたので、問題はURLを書き換えて拡張子を削除する.htaccessにあったようです。実際、ネットワークタブでリクエストは永久に移動されました。 ajax URLから.php拡張子を削除:解決しました。ありがとう、時間を無駄にしてすみません。乾杯

28
C. Ovidiu

Ajax呼び出しでデータ型をjsonとして設定する必要があります。

JQUERY CODE:

$.ajax({
  url: "ajax/add-user.php",
  type: "POST",
  dataType:'json',
  data: {name: 'John'},
  success: function(data){
      console.log(data);
  }
});

同時に、jsonデータを受け入れることができるかどうか、バックエンドコード(php)を確認しますか?

そうでない場合は、ヘッダーを以下のように構成します。

PHPコード:

/**
 * Send as JSON
 */
header("Content-Type: application/json", true);

ハッピーコーディング:

21
dreamweiver

私は最近この問題に遭遇しましたが、他の理由のために:

  1. My POSTデータは301としてリダイレクトされました
  2. サーバーリクエストはGETでした
  3. POSTデータを取得できませんでした

私の理由-私は次のように登録されたサーバーのURLを持っていました:

http://mywebsite.com/folder/path/to/service/

しかし、私のクライアントは呼び出していました:

http://mywebsite.com/folder/path/to/service

サーバー上の.htaccessはこれを正しいURLへの301 GETリダイレクトとして読み取り、POSTデータを削除しました。簡単な解決策はRLパスを再確認してくださいです。

@ C.Ovidiu、@ MarcB-二人ともデバッグに多くの時間を節約できました!

11
Reshape Media

jQuery.post を使用しないのはなぜですか?

$.post("ajax/add-user.php",
       {name: 'John'},
       function(response){
           console.log(response);
       }
);

次に、PHPで次のように入力を保存できます。

if(isset($_POST["name"]))
{
    $name= $_POST["name"];
    file_put_contents("name.txt", $name)
    header('HTTP/1.1 200 OK');
}
else
{
    header('HTTP/1.1 500 Internal Server Error');
}

exit;
6
BDR

私はこれと同じ問題を抱えていましたが、問題はdataオブジェクトの変数の1つが未定義であることが判明しました。何らかの理由で、投稿データの送信が妨げられました。変数を未定義以外に設定すると、問題が修正されました。

4
Gavin

コードを編集して使用してみてください:

$.ajax({url: 'ajax/add-user.php',
type: 'POST',
data: {name: 'John'},
dataType: 'html',
success: function(data){
alert("success");
console.log(data);
},error: function (xhr, ajaxOptions, thrownError) {alert("ERROR:" + xhr.responseText+" - "+thrownError);}
});

(エラーと成功のアラートを受け取るため、受け取ったものがhtmlであることを確認してください。これらの追加のパラメーターは、ajax呼び出しを微調整するのに役立ちます。後で非同期true/falseで再生します)

また、新しいウィンドウでプログラムajax/add-user.phpを実行し(URLを入力)、それがエコーするものを確認します。 。

幸運を。

0
gtryonp