我有一个简单的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
答案 0 :(得分:2)
这取决于data
内的内容。您正在运行eval
,因此正在运行data
中的任何内容。请在此处发布data
。
答案 1 :(得分:2)
您希望将哪些数据作为数据返回?运行eval会尝试执行(数据),这似乎不是正确的javascript。如果你只想存储一个字符串,你可以这样做:
var json = "(" + data + ")";
答案 2 :(得分:0)
jholloman几乎拥有它......
var json = eval("(" + data.responseText + ")");