如何使Ajax将JSON发送到PHP脚本

时间:2014-03-27 01:49:56

标签: javascript php ajax json

我正在开发一个需要在.json文件中将数据存储在服务器上的网页。

这是我到目前为止所尝试的内容:

Javascript代码:

// variable j = our json
var j;
function loadDoc(){
    var xmlhttp;
    if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else{// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function(){
        if (xmlhttp.readyState==4 && xmlhttp.status==200){
            j = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","things.json",true);
    xmlhttp.send();
}
loadDoc();
function rewrite(){
    var xhr;  
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...  
        xhr = new XMLHttpRequest();  
    } else if (window.ActiveXObject) { // IE 8 and older  
        xhr = new ActiveXObject("Microsoft.XMLHTTP");  
    }  
    xhr.onreadystatechange = function(){
        if(xhr.readyState == 4){

        };
    };
    xhr.open("POST", "write.php", true);
    xhr.send("data=" + j);
};

PHP文件:

<?php
$data = $_POST['data'];  
file_put_contents('things.json', $data);
?>

注意,在我的代码的其他部分中,j变量已更改。

我的问题是PHP脚本将JSON文件留空后。我做错了吗? php是否正确接收JSON?如果是这样,我该如何解决?

干杯!

如果你投票,请告诉我原因。

1 个答案:

答案 0 :(得分:0)

要像HTML表单一样POST数据,请使用setRequestHeader()添加HTTP标头。 (w3school page) 所以一定是: xmlhttp.setRequestHeader( “内容类型”, “应用/ JSON”);