2013-06-30 2 views
0

У меня есть форма, отправленная через AJAX. Когда я нажимаю отправить это дает мне синтаксическая ошибка:Ошибка синтаксиса JS: DOCTYPE html

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; 
    } 
}); 
} 

Что означает эта синтаксическая ошибка и как ее исправить?

Примечание: Я использую CMS, называемый бизнес-катализатором, и FormProcessV2Response является частью их системы.

+1

Это означает, что msg недействителен JavaScript. Почему вы все равно используете eval? –

ответ

1

Ответ вашего сервера содержит HTML, а не JSON. Вы eval JSON, потому что JSON - это подмножество JavaScript. Вы не можете оценивать HTML, это недействительный JavaScript.

+0

Оказывается, что Business Catalyst возвращал HTML не JSON из-за ошибки в одном из своих модулей. Итак, вы были правы. Благодаря! – L84

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 все равно будет предпочтительнее.)

+0

Как использовать '$ .parseJSON'? JS не моя лучшая область. Спасибо за помощь и совет! – L84

+0

@Lynda: 'var formResponse = $ .parseJSON (msg);' :) – Ryan