JS语法错误:DOCTYPE html

时间:2013-06-30 21:09:59

标签: javascript ajax forms jquery

我有一张通过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是其系统的一部分。

2 个答案:

答案 0 :(得分:5)

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

应该是

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

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

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

答案 1 :(得分:1)

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