JQuery AJAX-вызов веб-службы с пустым ответом - PullRequest
1 голос
/ 15 декабря 2009

Я использую jQuery для вызова AJAX на удаленном сервере, но с таким кодом (и якобы правильным) я получаю пустой ответ. Если я изменю dataType на «script», я получу ожидаемый XML в ответе, но я ничего не могу с ним сделать. Вот какой-то псевдокод, с которым я работаю:

function sendData(data)
{ 
 $.ajax(
 {
  type: "GET",
  url: "remote_server",
  dataType: "xml",
  data: "parameter=" + data,
  complete: function(xml)
  {
   console.info('XML result is',xml); 
  },
  contentType: "text/xml; charset=utf-8"
 });
}

Несколько дополнительных замечаний: я использую локальный файл .htm для вызова удаленного сервера. Когда я использую веб-браузер (http://remote_server/page?parameter=value),, я получаю действительный ответ XML. Наконец, заголовок ответа XML имеет тип кодировки ASCII, хотя я также пытался изменить значение набора символов в моем коде на ASCII с тем же результат.

Я ценю любую помощь, которую вы можете оказать.

Ответы [ 4 ]

5 голосов
/ 15 декабря 2009

Проблема, с которой вы сталкиваетесь, заключается в той же политике происхождения . Вы не можете сделать запрос AJAX, если не используете JSONP, для URL в другом домене. JSONP решает эту проблему, загружая тег сценария с вашим URL-адресом в качестве src и заставляя веб-сервер ответить кодом, обернутым вокруг результата JSON, который выполняет обратный вызов для вашего метода javascript.

3 голосов
/ 15 декабря 2009

Вы можете использовать вкладку NET в firebug, чтобы увидеть, какой звонок выполняется и каков фактический ответ. Это может помочь много.

0 голосов
/ 15 декабря 2009

Просто догадка, но проверьте MIME-тип данных, возвращаемых через функцию ajax. Если вы запрашиваете xml, сценарий ожидает содержимое, закодированное в виде text / xml или некоторого другого производного .

Возможно, вы также используете ту же политику происхождения, и в этом случае вам нужно будет все изменить в json и использовать jsonp .

0 голосов
/ 15 декабря 2009

Вы не можете сделать AJAX-запрос к удаленному домену. Что вы можете можете сделать, так это создать сценарий включения, но для этого требуется, чтобы ответ отправлялся как вызов функции javascript:

callback('<xml/>');

вместо

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