だから私はしばらくこの問題を抱えており、このトピックには無数の質問があることを知っています。可能な解決策をすべて試しましたが、まだ機能していません。
これは私の例では機能しない最も単純な例です
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拡張子を削除:解決しました。ありがとう、時間を無駄にしてすみません。乾杯
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);
ハッピーコーディング:
私は最近この問題に遭遇しましたが、他の理由のために:
私の理由-私は次のように登録されたサーバーのURLを持っていました:
http://mywebsite.com/folder/path/to/service/
しかし、私のクライアントは呼び出していました:
http://mywebsite.com/folder/path/to/service
サーバー上の.htaccessはこれを正しいURLへの301 GETリダイレクトとして読み取り、POSTデータを削除しました。簡単な解決策はRLパスを再確認してくださいです。
@ C.Ovidiu、@ MarcB-二人ともデバッグに多くの時間を節約できました!
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;
私はこれと同じ問題を抱えていましたが、問題はdata
オブジェクトの変数の1つが未定義であることが判明しました。何らかの理由で、投稿データの送信が妨げられました。変数を未定義以外に設定すると、問題が修正されました。
コードを編集して使用してみてください:
$.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を入力)、それがエコーするものを確認します。 。
幸運を。