Различные способы передачи XML через JQuery AJAX - PullRequest
6 голосов
/ 03 марта 2011

Я столкнулся с проблемой получения возвращаемого значения (content-type: "text / xml"). Я могу получить возвращаемое значение путем прямого доступа к этому URL:

https://[domain_name]/myfolder/myapi/?xml=<xml version='1.0'><MyTasks><Search></Search></MyTasks>

Пожалуйста, помогите мне исправить эти альтернативы, если они ошибочны (они называются в HTML, расположенном в MyFolder), потому что они всегда предупреждают «Failed».

$.ajax({
    type     : "GET",
    url      : "interface/?xml=<xml version='1.0'><MyTasks><Search></Search></MyTasks>",
    dataType : "text/xml",
    success  : function(msg){
        alert('Success');
    }
    error    : function(msg) {
        alert('Failed');
    }
});

или ...

$.ajax({
    type     : "POST",
    url      : "interface/",
    data     : { xml: escape("<MyTasks><Search></Search></MyTasks>") },
    dataType : "text/xml",
    success  : function(msg){
        alert('Success');
    }
    error    : function(msg) {
        alert('Failed');
    }
});

Спасибо.

РЕШЕНИЕ

Интерфейс должен быть доступен для https, поэтому я изменил url param на абсолютный URL. Я также должен использовать "xml", а не "text/xml" в качестве dataType. Это приводит к успеху, спасибо.

Ответы [ 3 ]

5 голосов
/ 03 марта 2011

Принимает ли это POST вообще .. из вашего примера это похоже на настройку для GET .. Попробуйте это:

$.ajax({     
   type     : "GET",
   url      : "http://blachblahblah.com/abc.html",
   dataType : "text/xml",
   data     : { xml : escape("<xml version='1.0'><MyTasks><Search></Search></MyTasks>") },
   success  : function(msg){ alert('Success'); } ,
   error    : function(msg) { alert('Failed'); } 
}); 
3 голосов
/ 03 марта 2011

Для упрощения я бы сделал следующее

Предположим, вы используете скрипт php script.php.

var xml_string = "<xml version='1.0'><MyTasks><Search></Search></MyTasks>";

$.get('script.php', {xml: xml_string}, function(){ //your success function
  alert('success');
}).error(function(){ //your error function
  alert("error");
});
1 голос
/ 13 февраля 2013

Я не понимаю, почему вы используете dataType?

То, что вам нужно / нужно, это contentType.

От api.jquery.com:

dataType (по умолчанию: Intelligent Guess (xml, json, script или html)) Тип: String Тип данных, ожидаемых от сервера.Если ничего не указано, jQuery попытается вывести его на основе MIME-типа ответа .........

contentType (по умолчанию: 'application / x-www-form-urlencoded; charset)= UTF-8 ') Тип: String При отправке данных на сервер используйте этот тип содержимого.По умолчанию используется «application / x-www-form-urlencoded; charset = UTF-8», что подходит для большинства случаев.Если вы явно передаете тип содержимого в $ .ajax () .............

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...