В чем заключается ошибка Uncaught SyntaxError: Неожиданный токен <при использовании eval в jquery? - PullRequest
4 голосов
/ 13 марта 2012

У меня есть простой вызов 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 ]

2 голосов
/ 13 марта 2012

Что вы ожидаете получить в виде данных? Запущенный eval попытается выполнить (data), что не похоже на правильный javascript. Если вы просто хотите сохранить строку, вы можете сделать:

var json = "(" + data + ")";
2 голосов
/ 13 марта 2012

Зависит от того, что внутри data.Вы запускаете eval, поэтому все, что находится в data, запускается.Пожалуйста, отправьте data здесь,

0 голосов
/ 23 марта 2013

У Джолломана почти было это ...

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