2009-12-15 3 views
1

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

 
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, хотя я также попытался изменить значение charset в моем коде на ASCII с тем же результатом.

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

ответ

3

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

5

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

0

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

callback('<xml/>'); 

вместо того, чтобы просто

<xml/> 
0

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

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

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