Идея в том, чтобы отправить обратно исполняемый код с сервера.Напишите плагин jQuery или расширьте функцию ajax, чтобы она возвращала строку XML в качестве параметра функции.
myCallback("
<root>
<person>
<first>John</first>
<last>Doe</last>
</person>
</root>")
Плагин будет анализировать эту строку в XML и возвращать ее обратно в ваш реальный обратный вызов.Что касается вашего обратного вызова, то он не знает о процессе преобразования string -> xml
.
Вот существующая реализация .
. Наиболее идеальным интерфейсом для этого с jQuery было бы,
$.ajax({
url: 'http://example.com/resource?type=xml',
dataType: 'xmlp',
success: function(xml) { .. }
});
, но с тех пор как он возился и переписывал jQuery.ajax
проблематично, вы можете написать это как отдельный плагин с пространством имен, который будет использовать getScript
внизу.
$.myNamespace.ajax({
..
});
Чтобы это работало, вам потребуется контроль над сервером.Сервер должен знать, что XML запрашивается, и отвечать вызовом функции, который содержит строку XML в качестве параметра.Предполагая, что имя обратного вызова, которое вы отправили на удаленный сервер, было foo
, сервер должен будет ответить примерно так:
foo("<names><name>..</name></names>")
Я думаю, что если вы используете браузер, который поддерживает E4X, то будетне нужно оборачивать XML внутри строки.Сервер может просто вернуть XML в качестве аргумента функции обратного вызова:
foo(
<names>
<name>John Doe</name>
</names>
)
Но, к сожалению, E4X пока не поддерживается широко.