2013-11-14 3 views
0

Следующий вызов ajax отлично работает в Chrome/FF, но не работает только в IE. Я попытался отключить кеш, физические/относительные пути, асинхронное включение и выключение, но не повезло. Я все время крутился вокруг, и все это время находил и тестировал различные решения, но мне все еще не повезло.Ошибка AJAX с ошибкой только IE

код ошибки, возвращаемый не очень полезно: error undefined

Любые идеи?

function CreateCard(//a bunch of paramaters//){ 



       var soapMessage ='//big long soap string goes here//';   
       var webServiceURL="//consumption URL (relative)"; 


       $.ajax({ 
        url: webServiceURL, 
        type: "POST", 
        crossDomain: true, 
        dataType: 'xml', 
        data: soapMessage, 
        processData: false, 
        contentType: "text/xml; charset=\"utf-8\"", 
        success: function(data, status, req, xml, xmlHttpRequest, responseXML) { 
         var newCardID=$(req.responseXML).find('AddeCardRequestResult').text(); //Fetches new card id 
         $('div#debug').html("success: " + newCardID) 
         $('#CID').val(newCardID); 

         __doPostBack('btnSubmit', newCardID); 

        }, 
        error: function(xhr, msg) { 
         $('div#debug').html(msg + '\n' + xhr.responseText) 
        } 
       }); 




      } 
+0

Является ли 'soapMessage' объектом или строкой? Является ли 'webServiceURL' ожидающим данные POST? – MonkeyZeus

+0

soapMessage - это строка. Согласованный XML, действительно. Я признаю, что я не знаком с SOAP, но поскольку это работает в другом месте, я не думаю, что что-то не так с тем, как этот элемент отформатирован. – sdowswell

+0

О, просто любопытно, потому что я никогда не использовал его так. Вы знакомы с вкладкой «Сеть» Chrome/FireFox/или IE? – MonkeyZeus

ответ

0

Этот ответ здесь, чтобы просто выделить конечный результат комментариев в вопросе ФП в:

webServiceURL находится на том же домене, что и сценарий поэтому crossDomain: true, не требуется.

data: soapMessage,, вероятно, также вызывает проблему, поскольку AJAX указывает POST, но soapMessage - это строка XML, которая преобразуется в строку запроса, добавленную к URL-адресу.

+0

Как только это было настроено, все браузеры отображали ту же ошибку, которую я смог (в конечном итоге) решить. (в этом случае моя строка soapMessage содержала элемент, который включал в себя содержимое в формате HTML. Мне пришлось предварительно кодировать его, прежде чем конкатенация в строку с помощью encodeURIComponent(). После этого все работало плавно. – sdowswell

0

С помощью т. Е. Вам нужно добавить какой-либо случайный параметр к вашему запросу.

Обычно я использую что-то вроде (new Date()).getTime() как значение имени параметра, которое не используется удаленным приложением.

Это будет трюк, т. Е. Думать, что это новый запрос каждый раз.

Редактировать: Найдено схожие question добавление ссылки.

Это answer делает лучшую работу, объясняя это, чем я, у нее также есть решение jquery. (копируется из связанного ответа так Заслуга там.)

$.ajaxSetup({ cache: false }); 
+0

где бы я добавил этот случайный параметр? – sdowswell

+0

Я уверен, что есть лучший способ jquery сделать это, но быстрый и грязный способ будет webServiceURL + "? Random_parameter =" + (new Date()). GetTime(); , конечно, это предполагает, что ваш url уже не имеет параметров, если это так изменить? to & – Diver

+0

изменил url ref на 'url: webServiceURL + "? rnd =" + (новая дата()). getTime(),' все еще нет кубиков. – sdowswell

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