Одним из решений является использование JSONP .
Вот код на стороне клиента, который вы бы использовали:
<script>
function onSuccess(result) {
for (var i = 0; i < result.length; i++) {
// alert(result[i].MediaPath);
var s = result[i].MediaPath.split('|');
for (var j = 0; j < s.length; j++) {
// alert(s[j]);
input.push(s[j]);
}
}
}
</script>
<script src="http://www.mysite.com.au/GetImages.ashx?p=2&callback=onSuccess" ></script>
<!-- !!! Notice that the src now has a "callback" paramater which the client is passing to the server. -->
Вот что ответит сервер:
onSuccess(
{
'your':'json',
'data':'here'
}
)
Уловка, которая делает эту работу, состоит в том, что сервер больше технически не возвращает данные JSON. Вместо этого он вернет данные json, обернутые функцией javascript (которую определит код на стороне клиента), которая будет автоматически выполняться браузером, потому что это то, что браузеры делают с тегами.
Если вам нужно, чтобы он был собран динамически, тогда вы можете использовать код javascript для создания элемента сценария, добавить URL-адрес в качестве атрибута 'src', а затем добавить тег сценария в тело, чтобы браузер выполнял его. Этот хак является очень стандартным способом динамической загрузки скриптов. MooTools может уже может сделать это.
Недостаток моего предложения: он больше не асинхронный.