这个Uncaught SyntaxError有什么错误:意外的令牌<在jquery中使用eval时?

时间:2012-03-13 00:35:42

标签: javascript jquery ajax syntax-error

我有一个简单的ajax调用:

function message(){
    $.ajax({
        type: "GET",
        url: "/file/timestamp="+ timestamp,
        async: true,
        cache: false,
        success: function(data){
            var json = eval('('+data+')');
            console.log(json);
        }
    });
}

我在此行收到错误Uncaught SyntaxError: Unexpected token <var json = eval('('+data+')');

任何想法?

感谢。

编辑: 错误中的一些细节:

$.ajax.successajax.js:9
f.Callbacks.njquery.js:2
f.Callbacks.o.fireWithjquery.js:2
wjquery.js:4
f.support.ajax.f.ajaxTransport.send.d

这里有一些php如果有帮助

public function fileAction()
{
    $this->getHelper('viewRenderer')->setNoRender();

    $filename = '/test/text.txt';

    $front  = Zend_Controller_Front::getInstance();
    $data   = $front->getRequest()->getParams();

    $lastModif      = !empty($data['timestamp']) ? $data['timestamp'] : 0;
    $currentModif   = filemtime($filename);

    while($currentModif <= $lastModif){
        usleep(10000);
        clearstatcache();
        $currentModif = filemtime($filename);
    }

    $response = array();
    $response['msg'] = file_get_contents($filename);
    $response['timestamp'] = $currentModif;

    echo json_encode($response);
}

如果我运行此动作我得到json:{"msg":"message","timestamp":1331599879}但由于某种原因,响应不是这个而是一些html

3 个答案:

答案 0 :(得分:2)

这取决于data内的内容。您正在运行eval,因此正在运行data中的任何内容。请在此处发布data

答案 1 :(得分:2)

您希望将哪些数据作为数据返回?运行eval会尝试执行(数据),这似乎不是正确的javascript。如果你只想存储一个字符串,你可以这样做:

var json = "(" + data + ")";

答案 2 :(得分:0)

jholloman几乎拥有它......

var json = eval("(" + data.responseText + ")");