0

Apache サーバーからの AJAX 応答を解釈しようとすると、Jquery が構文エラーを出力します。このファイルは、テンプレート エンジンとして Smarty を使用して php で出力されます。

これは、「バグ」の単純な最小限の作業例です(クロム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/, '')、回答スクリプトに追加しましたが、どちらも機能しません。

誰かが別の解決策を考えていますか?

編集: 回答のバイト数を数えようとしました。実際の文字列よりも 2 バイト多い「75」と表示されます。しかし、私はこの違いの起源を知りません。

> $.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 に答える