0 レビュー
1 回答
データを受信していないApachePHPサーバーへのjQueryajaxPOSTリクエスト
このjsjQueryスクリプトは、フォームデータをオブジェクトに適切にフォーマットし、PHPコードに送信しています。
$("#formSignup").submit(function(e){
// Map the array into a properly formatted object
var data = {};
$.map($(this).serializeArray(),function(n, i){
data[n.name] = n.value;
});
// Send the http request
$.ajax({
type: "POST",
url: "api/signup.php",
data: JSON.stringify(data),
contentType: "application/json",
success: function(response){
//console.log(JSON.parse(response));
console.log(response);
},
failure: function(err){
console.error(err);
}
});
e.preventDefault(); // Don't submit defaultly
});
ただし、PHPはデータを受信できません。 print_r($_POST)
は空の配列を出力し、値にアクセスできません。間違ったファイルからも応答がありません。
mozilla開発コンソールによって記録されたXmlHttpRequestがJSONデータを明確に投稿していることを考えると、これはかなり奇妙なことです。
その他の質問には、サーバーによって行われたリダイレクトを示すことで回答されています。ただし、これらの設定では何もしていません。しばらく前に、同じサーバーで自分の機能を使用して投稿リクエストを処理しました。
わからない
0
レビュー
答え :
解決策:
ajax
オブジェクトからcontentType
プロパティを削除します。
データをシリアル化するには、 $(this).serialize()
を使用します。
$( "#formSignup")。submit(function(e){
var data = $(this).serialize();
//httpリクエストを送信します
$。ajax({
タイプ:「POST」、
url: "api / signup.php"、
データ:データ、
成功:function(response){
console.log(response);
}、
失敗:function(err){
console.error(err);
}
});
e.preventDefault(); //デフォルトで送信しない
});
その後、 $_POST
変数内のデータを正常に表示できるようになります。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。