2014-01-09 4 views
0

Я делаю вызов ajaxSubmit для веб-службы, которая вернет XML.JQuery ajaxSubmit ответ всегда в нижнем регистре

Когда я звоню в ту же службу, используя XMLHttpRequest.send, ответ правильный. Однако, если я использую:

$(form).ajaxSubmit({ 
     error: function _(response) { 
      $(iframeEl).remove(); 
      config.error.call(scope, Thunderhead.util.JSON.decode(response)); 
     }, 
     success: function _(response) { 
      console.log(response); 
      $(iframeEl).remove(); 
      var result = response; 
      config.success.call(scope, result); 
     }, 
     iframe: true 
    }); 

Это возвращает правильный ответ XML, но все теги были преобразованы в нижний регистр.

Я проверил вызов на вкладке «Сеть» в консоли разработчика, и случай верен там, но когда он возвращается ajaxSubmit, он имеет строчный регистр.

Кто-нибудь знает, что вызывает это или как его исправить?

+0

@chim, что я должен проверить? Хорошо, я вижу, я не знаю ... –

+0

Я не использую Firefox. Я тестировал в Chrome и IE9, поведение в обоих случаях одинаково. – Jess

ответ

-1

Некоторые дополнительные вопросы, возникших в связи с этим, в конце концов, так что просто разместить свое окончательное решение в случае, если кто-то имеет эту проблему. Я довольно новичок в javascript, так что это могло быть очевидно для большинства, но это может помочь кому-то другому.

Обратный вызов успеха может фактически принимать 3 параметра, третий из которых (arg2) является фактическим ответом от запроса без каких-либо изменений из плагина формы Malsups.

Итак, в конце концов, решение было просто использовать этот третий параметр вместо параметра ответа.

$(form).ajaxSubmit({ 
    error: function _(response) { 
     $(iframeEl).remove(); 
     config.error.call(scope, Thunderhead.util.JSON.decode(response)); 
    }, 
    success: function _(response, arg1, arg2) { 
     console.log(response); 
     $(iframeEl).remove(); 
     var result = response; 
     config.success.call(scope, arg2.responseXML); 
    }, 
    iframe: true 
}); 
0

Это может происходить, потому что js принимает xml в качестве ответа. Для большинства xml-парсеров нет разницы, который используется в именах тегов xml.

Предлагаю попытаться изменить тип данных ответа.

Например, существует такая опция в методе jQuery.ajax: http://api.jquery.com/jquery.ajax/ (named dataType). Я бы попытался использовать «text» dataType, если это действительно важно.

+0

Установка типа текста приводит к тому, что теги удаляются из ответа, и я просто получаю значения. – Jess

1

Вы используете Malsups jQuery form plugin

Этот плагин делает много toLowerCase трансформирует, я слишком близко не смотрел, но это, кажется, нижний регистр имен тегов чего-то, так что это, вероятно, ваш преступник.

Я бы рекомендовал рефакторинга с помощью простого jQuery.ajax() вызова вместо

$(form).on('submit', function(e) { 
    var url = $(form).attr('action'); 
    e.preventDefault(); 
    $.ajax(url, { 
    error: function _(jqXHResponse) { 
     // your code 
    }, 
    success: function _(response) { 
     console.log(response); 
     // your code 
    } 
}); 
+0

Спасибо, это был действительно плагин формы, который был проблемой. Это работает с вашим кодом. – Jess

+0

Блестящая благодарность Джесс – chim

Смежные вопросы