首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ThinkPHP AJAX eval 報錯:SyntaxError: expected expression, got '<'

     編輯:程式設計綜合問答

現象

Firefox 控制台報錯 SyntaxError: expected expression, got '<',JS 代碼 eval(xhr.responseText) 執行失敗。

原因

服務端返回的是 HTML 片段(以 < 開頭),而非合法 JavaScript 表達式。eval 只能執行 JS 代碼,不能直接執行 HTML。

修正方案

  1. 後端返回 JSON(推薦):
    
    // 控制器
    return json(['status'=>1, 'html'=>'<div>...</div>']);
    
    // JS
    var resp = JSON.parse(xhr.responseText);
    document.getElementById('container').innerHTML = resp.html;
    
  2. 若必須用 eval 執行 JS 片段:用括號包裹強制表達式上下文。
    eval('(' + xhr.responseText + ')'); // 將語句轉為表達式
    
  3. 純 HTML 片段直接 innerHTML:
    document.getElementById('container').innerHTML = xhr.responseText;
    

最佳實踐

徹底拋棄 eval,統一採用 JSON 數據交換 + 模板渲染(如 template.js、Vue、React),安全且可維護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved