0

当我尝试解释来自我的 Apache 服务器的 AJAX 响应时,Jquery 会打印一个语法错误。该文件以 php 格式打印,Smarty 作为模板引擎。

这是“错误”的一个简单的最小工作示例(来自铬 javascript 终端)

> $.post('newtasklist',{name: 'hello'},function(ans){console.log($(ans))})

XHR finished loading: "http://localhost/narasimha/newtasklist". jquery-1.9.1.js:8526

Uncaught Error: Syntax error, unrecognized expression: <li><a><input type="hidden" class="listid" value="4" />hello(0)</a></li> 

如您所见,这在我的 HTML 标记中不是问题。我认为它可能是一个 BOM(我在 gedit 3.6.2 下工作),所以我有bomstrip-files我的项目目录的每个 .php 和 .tpl 文件......但它没有改变任何东西。

此外,我已经添加ans.replace(/^\uFEFF/, '')到我的答案脚本中,但它也不起作用。

有没有人考虑另一种解决方案?

编辑: 我试图计算答案中的字节数。它告诉我“75”,比实际字符串多 2 个字节。但我不知道这种差异的根源。

> $.post('newtasklist',{name: 'salut'},function(ans){
    console.log('ans : ', ans); 
    console.log('n_ans : ', ans.length);})

ans :  
  <li><a><input type="hidden" class="listid" value="13" />salut(0)</a></li>
n_ans :  75

> '<li><a><input type="hidden" class="listid" value="13" />salut(0)</a></li>'
  .length
73
4

2 回答 2

0

我发现了问题:JQuery()函数 ( $()) 不喜欢以换行符开头的字符串作为馈送。一个简单trim()的类似正则表达式.replace()已经解决了这个问题。感谢大家的帮助。

于 2013-08-11T16:02:29.623 回答
0

我从未与 smarty 合作过,但我有一些想法,也许他们可以帮助您找到问题。对我来说,它看起来更像是一个 smarty/php 错误

  • 当您在浏览器中打开 post-url 时会发生什么?它是否显示相同的问题?
  • 我不知道 smarty 有多敏感……你使用什么 DOCTYPE……如果是 HTML5,那么输入标签没有右/斜杠
  • 也许你想分享一些生成 html 的 php
于 2013-08-10T14:38:15.607 回答