ほとんどの場合、問題はこの行にあります。dataType: 'json',
これはJsonの応答を期待しており、HTMLまたはテキストのテキスト応答を送信しているためです。のは、定義最初のを見てみましょう:
JSON.stringify文字列でJSONテキストJSONテキストとストアにJavaScriptオブジェクトをオンにします。
contentTypeは、特定の形式を指定してサーバーに送信されるヘッダーです。
dataTypeあなたは、どのような応答を期待しているかをjQueryに伝えていますか?
例:
あなたのような何かを掲示している場合:{"name":"John Doe"}
と背面期待:{"success":true}
その後
はあなたが持っている必要があります。詳細については
var data = {"name":"John Doe"};
dataType : "json",
contentType: "application/json; charset=utf-8",
data : JSON.stringify(data),
:Check jQuery Docs
解決策1:(テスト)
- だけ
dataType: 'json',
行を削除し、jQueryのデータ型を決定しましょう。(それは特定にかなり良い仕事をしていません)または側面(クライアントおよびサーバー)の両方で正しいデータ型を使用してください
解決方法2:(テスト)
のjQuery:
var name = $('#name').val();
var email = $('#email').val();
var password = $('#password').val();
$.ajax({
type: 'POST',
url: 'ajax.php',
dataType : "html", //assuming you need html response like '<div>Success</div>'
//Common types: html, xml, json & text
cache: false,
data: { json : encodeURIComponent(JSON.stringify({
name:name,
email:email,
password:password
}))},
success: function(){
alert('request successful');
},
error: function(){
alert('error occured');
}
});
PHP:
$json_data = json_decode(urldecode($_POST['json']));
//now $json_data variable has decoded JSON data
echo $json_data->name;
ソリューション3:(テストしていない)
contentType
を設定することで、JSONオブジェクトを送る:
contentType: "application/json; charset=utf-8",
のように、その後php://input
(NOTE使用して、生の入力を読み込む:$ _POST
はここで働いていないだろうし)
ここにある方法:
PHPファイルに
header('Content-Type: application/json; charset=UTF8');
をコンテンツタイプを設定し
- 要求が動作するかどうかJSONオブジェクト
$data = json_decode($input);
はこれが発生する可能性がありますように、データ
$input = file_get_contents('php://input');
$decoded_input = urldecode($input);
あなたの反応を表示できますか?あなたはjson形式で応答を設定していないようです。 –
@PankajMakwana * "Ajax呼び出しのデータに' JSON.stringify'を使う必要はありません "* < - 彼らは投稿したい場合に行います'json'フィールドのJSON文字列値です。 – Phil