2016-07-25 9 views
0

このjQueryのコードが動作している:jQueryのJavaScriptの対アヤックス 'POST' 機能

$.ajax({ 
    type: "POST", 
    url: "file.php", 
    data: { json: json }, 
    complete: function (data) { 
     var result = data.responseText; 
     console.log(result); // logs 'echo' from PHP file 
    } 
}); 

こののJavaScriptコードはまだ機能していません。

var xhr = new XMLHttpRequest(); 
xhr.open("POST", "file.php", true); 
xhr.setRequestHeader('Content-Type', 'application/json'); 
xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4 && xhr.status == 200) { 
     var result = xhr.responseText; 
     console.log(result); // supposed to log 'echo' from PHP file 
    } 
} 
xhr.send(JSON.stringify(json)); 

では、これら2つの方法ではないです同等か、私は何か不足していますか?

if(isset($_POST['json'])){ 
$obj = json_decode($_POST['json']); 
//some php operation 
// echo $obj keys and values 
} 
+1

あなたは()https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest – Nitin

+2

リクエストヘッダが間違っている可能性があります( 'する必要があります開いた後setRequestHeader()を呼び出す必要があります(JSON.stringify(json)); ' – Will

+0

@良いキャッチ、私はそれを行う必要があると思うが、しなかった修理する。 – Wagtail

答えて

1
data : { json: json } 

に連載ます '{ "JSON":{データ}}'

JSON.stringify(json) 

」に連載ます

と仮定 'file.php' はこのようなものが見えます{データ} 'があり、 "json"キーがありません

"json"キーを持つ親ラッパーオブジェクトにjavascriptオブジェクトを追加します

JSON.stringify({ json: json }); 
+0

これは、json文字列をjson_decode($ _ POST ['json'])のPHP関数に正しく渡すための解決策でしたが、JavaScriptがjQuery関数と同じconsole.log()値を返さなかった理由を説明しませんでした。 – Wagtail

+1

$を設定した場合。ajax dataTypeを "text"に変更する必要があります。欠落した$ .ajaxがその内容に基づいて戻り値の型を推測し、それを返す前にデータを処理する可能性があります。 http://api.jquery.com/jquery.ajax/ [settings-dataType]を参照してください。 – Steve

関連する問題