JS语法错误:DOCTYPE html

JS Syntax Error: DOCTYPE html

本文关键字:DOCTYPE html 错误 语法 JS      更新时间:2023-09-26

我有一个通过AJAX提交的表单。当我点击提交时,它会给我一个语法错误:

SyntaxError: syntax error
[Break On This Error]   
   <!DOCTYPE html>

它引用了第31行,这是一行代码:

var formResponse = eval(msg);

以下是完整的AJAX代码:

function jqsub() {
var $f = $('#email-form');
var $m = $('#success-message');
$.ajax({
  type: 'POST',
  url: $f.attr('action') + '&amp;JSON=1',
  data: $f.serialize(),
  success: function(msg) {
    var formResponse = eval(msg);
    if (formResponse.FormProcessV2Response.success) { 
            $f.fadeOut();
            $m.fadeIn().html('<p>Thank you for joining our mailing list.</p>'); 
    }
   },
   error: function(msg) {
   alert('error'+msg);
   return false;
   }
 });
}

这个语法错误是什么意思?我该如何解决这个问题?

注意:我使用的是一个名为Business Catalyst的CMS,FormProcessV2Response是他们系统的一部分。

url: $f.attr('action') + '&amp;JSON=1'

应该是

url: $f.attr('action') + '&JSON=1'

这将使它实际返回JSON。您只在HTML中使用&amp;——您可能已经从链接属性或其他内容复制了它。

此外,由于您使用的是jQuery,所以您可以使用$.parseJSON而不是eval。或者更好的做法是,在$.ajax选项中设置dataType: 'json',并按原样使用msg!(即使你没有,JSON.parse仍然是最好的。)

服务器的响应包含HTML,而不是JSON。您评估JSON是因为JSON是JavaScript的一个子集。您无法评估HTML,它不是有效的JavaScript。