从AJAX POST发送获取JSON数据

时间:2014-01-09 15:42:22

标签: javascript php ajax json

我需要从PHP中获取一些JSON数据和AJAX函数 这是我到目前为止所写的,但不确定在PHP方面该做什么。 JS:

window.onload = function() {
    var json = {
        hello : 'howareyou',
        good : 'yes i am good',
        toast : 'i love toast'
    }
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if(xhr.readyState == 4 && xhr.status == 200) {
            alert(xhr.responseText);
        } else {
            alert("no");
        }
    }
    xhr.open('POST', 'json.php', true);
    xhr.send(json);
}

PHP:

<?php
if(isset($_POST['json']) ){
    $json = $_POST ['json'];
    $json_d = json_decode($json);
    echo $json . 'hello';
} else {
    echo 'error';
}
?>

HTML:

<html>
<head>
    <script type="text/javascript" src='ajax.js'></script>
<body>
HELLO THERE THIS IS AN HTML PAGEEEEE
</body>
</html>

2 个答案:

答案 0 :(得分:3)

在客户端对您的JSON进行字符串化。

window.onload = function() {
    var json = {
        hello : 'howareyou',
        good : 'yes i am good',
        toast : 'i love toast'
    }
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if(xhr.readyState == 4 && xhr.status == 200) {
            alert(xhr.responseText);
        } else {
            alert("no");
        }
    }
    xhr.open('POST', 'json.php', true);
    xhr.send(JSON.stringify(json));
}

解码原始请求正文中的JSON。

$json = json_decode(file_get_contents("php://input"));

答案 1 :(得分:1)

如果您想使用原始发布数据,请尝试获取JSON:

$json = json_decode(file_get_contents("php://input"));

JS示例:

var xmlhttp = new XMLHttpRequest();   // new HttpRequest instance 
xmlhttp.open("POST", "/json-handler");
xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xmlhttp.send(JSON.stringify({key:"value", key:"value"}));