PDA

Просмотр полной версии : ExternalInterface JS(AJAX)


FenixGnom
21.10.2011, 15:10
Всем добрый день, сталкнулся вот с какой проблемой в AS я делаю вызов


var response:Object = ExternalInterface.call('get_config');
trace(response);


в js


function get_config()
{
$.ajax({
type: "POST",
url: "/ajax/get_config",
data: {},
dataType: 'json',
success: function(data){
return data;
}
});
}


и почему то в AS приходит значение null хоть в консоли показывает что запрос ajax прошел нормально и ответ не нул а JSON

Подскажите пожалуйста в чем может быть проблема, почему возвращаеться не JSON

Genzo
21.10.2011, 15:17
Что-то мне подсказывает, что ExternalInterface ждет моментального ответа от JS, а JS в свою очередь ждет ответа от сервера. Попробуйте лучше добавить еще callBack в AS и вызывать его JS'ом на success, и уже там обрабатывать.

fish_r
21.10.2011, 15:24
не знаю jquery хорошенько, но , судя по коду, у вас функция которую запрашивает флеш и не возвращает ничего. так?

FenixGnom
21.10.2011, 16:02
Там получаеться что приходит null я пробывал делать что бы в AS через setTimeout через 2 секунды только запрашивало результат все равно получаю null так же проверял если в JS прописать


function get_config()
{
$.ajax({
type: "POST",
url: "/ajax/get_config",
data: {},
dataType: 'json',
success: function(data){
return '{"json":"JSON"}';
}
});
}

тогда во AS приходит нормальный результат

fish_r
21.10.2011, 16:31
тогда через addCallback() зарегистрируйте функцию js и отдавайте в неё результат запроса, а она уже пусть дернет флешку

Genzo
21.10.2011, 16:33
попробуйте так :


ExternalInterface.addCallback("asCallback" , trace);
var response:Object = ExternalInterface.call('get_config');
trace(response);



function get_config()
{
$.ajax({
type: "POST",
url: "/ajax/get_config",
data: {},
dataType: 'json',
success: function(data){
document[player].asCallback(data);
}
});
}

trng
21.10.2011, 17:23
Когда в аяксе возникнет событие "success" и вызовется анонимная функция "function(data)" заранее неизвестно. Поэтому без addCallback таки никак.
P.S.
А к чему такие сложности с аяксом?
Если вы сами вызываете "ExternalInterface.call('get_config')", то почему вместо этого вы не можете получить данные с "/ajax/get_config" тем же urlloader-ом прямо в AS?

FenixGnom
21.10.2011, 17:52
Спасибо большое за помощь, с аадкалбак все теперь правельно работает :yahoo: