Javascript意外的令牌ILLEGAL

时间:2012-01-08 21:35:47

标签: javascript xmlhttprequest token

我有一个PHP脚本(fetchData.php),它可以获取一些数据并将其输出到页面。

<?php 
require 'config.php'; 
require 'jsonapiSDK.php';
$api = new JSONAPI($ip_address, $jsonapi_port, $username, $password, $salt);
$response = $api->call('BWMFunction');
echo(addslashes($response["success"].";")); 
?>

您可以在此处查看输出:http://justicecraft.net/worldmap/fetchData.php 我有另一个页面使用XMLHttpRquest来获取fetchData.php的响应 这是它的JavaScript。它应该接受响应,并且eval()它(创建一个名为BWMFunction的数组)然后将该数组传递给我拥有的另一个函数。当我尝试eval()响应时发生了非法令牌错误。

function fetchData() {
    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) {
            res = xmlhttp.responseText;
            alert(res);
            eval(res);
            generate(BWMFunction);
        }
    }
    xmlhttp.open("GET", "fetchData.php", true);
    xmlhttp.send();
}

这是我第一次使用StackOverflow,所以任何帮助都将不胜感激。我现在已经搜索了很长一段时间,但没有一个答案对我有帮助。

1 个答案:

答案 0 :(得分:6)

您从fetchData.php返回了无效的javascript,这就是eval方法崩溃的原因。您应该在输出中使用简单\"而不是"。我完全不了解PHP,但我准备打赌它造成损害的addslashes函数。所以也许你可以尝试以下方面:

echo($response["success"].";");