JavaScript,Ajax,php parsererror,以及如何获得发布Json?

时间:2013-12-27 03:05:54

标签: javascript php jquery ajax json

我在game.php中得到了这个代码来刷新.refre,但我总是得到“parsererror”。 jsonString来自jsonString = JSON.stringify(object);

<div class="refre"></div>..
<script>...
        jsonString ={"right":0,"arrayQ":[{"0":"10","idQ":"19"},
            {"0":"34","idQ":"20"},{"0":"89","idQ":"14"}],"lives":40};

    $.ajax({
        type: 'POST',
        data: jsonString,
        dataType: 'json',
        url: 'Q.php',
        contentType : 'application/json; charset=utf-8'

    }).done( function (data, status) {
        $('.refre').load('Q.php');
        alert('Right');
    })
    .fail( function (data, status) {
        alert("Wrong: "+status);
    });
        ...</script>

另一个文件是Q.php,这个读取POST并发送一些HTML,现在它仅用于检查POST的信息。

<?php
$value = json_decode($_POST);
$categories = json_decode(file_get_contents('php://input'));

print_r($value);
print_r($categories);

?>

ajax有什么问题?我如何在Q.php中获得POST?如何从Q.php中的JSON中获得“生命”?

3 个答案:

答案 0 :(得分:2)

试试这个,

<div class="refre"></div>..
<script>...
        jsonString =[{"right":0,"arrayQ":[{"0":"10","idQ":"19"},
            {"0":"34","idQ":"20"},{"0":"89","idQ":"14"}],"lives":40}];

    $.ajax({
        type: 'POST',
        data: jsonString,
        dataType: 'html',
        url: 'Q.php',
        contentType : 'application/json; charset=utf-8'

    }).done( function (data, status) {
        $('.refre').html(data);
        alert('Right');
    })
    .fail( function (data, status) {
        alert("Wrong: "+status);
    });

    ...</script>

<?php
$value = json_decode($_POST);
$categories = json_decode(file_get_contents('php://input'));

print_r($value);
print_r($categories);

?>

答案 1 :(得分:0)

你所谓的jsonString不是JSON,它是一个javscript对象。

当您将对象传递给data $.ajax时,jQuery将对该数据进行编码。

在php中,您可以使用lives检索$_POST['lives']它不是作为JSON发送的

将对象中的键视为表单输入的name

对于您的输出,您只能从服务器返回一个JSON字符串。 JSON必须有一组打开/关闭括号,以便它可以转换为一个数组或对象

答案 2 :(得分:0)

<div class="refre"></div>
<script>
    jsonString =[{"right":0,"arrayQ":[{"0":"10","idQ":"19"},{"0":"34","idQ":"20"},{"0":"89","idQ":"14"}],"lives":40}];

    $.ajax({
        type: 'POST',
        data: jsonString,
        url: 'Q.php',
    }).done( function (data, status) {
        $('.refre').html(data);
        alert('Right');
    })
    .fail( function (data, status) {
        alert("Wrong: "+status);
    });
</script>

Q.php:

print_r($_POST);

这没关系。 '数据'不会以json的形式发送。 $ _POST是Q.php中的一个数组,你不需要json_decode它。