AJAX + PHP意外的非法令牌

时间:2014-07-19 11:15:27

标签: php ajax

我正在使用AJAX从PHP获得响应,它可以解决所有问题,现在我在以下代码中从普通回声更改为JSON回声:

echo $_GET["jsoncall"].'({"posts": [';
echo '
{
"canvasUniqueId":"'.$uniqueId.'",
"canvasUserId":"'.$userId.'",
"canvasFile1":"'.$imageFile1.'",
"canvasFile2":"'.$imageFile2.'"
},';
echo ']})';

然后我在完成AJAX以在HTML元素中设置文本时获取此数据,但是我收到错误,控制台说:意外的非法令牌。

我为提出一个糟糕的问题而道歉,但似乎很难解决,我无法弄明白。

1 个答案:

答案 0 :(得分:2)

停止尝试手动编写JSON。 PHP内置了一些工具,可以为您正确地转义内容。构建真实的数据结构,然后对其进行编码。它使得查看正在发生的事情变得更加容易,并且不易出错。

<?php

$data = Array(
    "posts" => Array(Array(
            "canvasUniqueId" => $uniqueId,
            "canvasUserId" => $userId,
            "canvasFile1" => $imageFile1,
            "canvasFile2" => $imageFile2
        ))
    );

header("Content-Type: application/javascript");

# Defend against Rosetta attack
# http://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/
header("Content-Disposition: attachment; filename=f.txt");
header("X-Content-Type-Options: nosniff");
echo "/**/";

# Now output JSONP
echo $_GET["jsoncall"] . "(" . json_encode($data) . ")";