0

我有一个通过 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它是他们系统的一部分。

4

2 回答 2

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

应该

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

这将使它真正返回 JSON。你只&amp;在 HTML 中使用——你可能已经从链接属性或其他东西中复制了它。

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

于 2013-06-30T21:10:57.093 回答
1

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

于 2013-06-30T21:12:41.933 回答