getJSON и переменная область видимости в JavaScript - PullRequest
0 голосов
/ 02 июня 2010

Чтобы сделать вызовы функций в нашем внутреннем php-коде, мы реализовали нечто, называемое ActionProxy, например:

function ActionProxy(action, input, callback){  
    $.post("ActionProxy.php?method="+action, 
        { data: input},   
            function(data, textStatus, XMLHttpRequest){
                        //return data.ResponseWhatever
                        }
});

Проблема, с которой мы сталкиваемся, состоит в том, что использование данных вне ActionProxy невозможно из-за ограничений области действия (мы предполагаем), установка
var res = data.ResponseWhatever
или
return data.ResponseWhatever

довольно бесполезно. Как лучше всего обработать эти ответы, чтобы функции, вызывающие actionproxy, могли получить доступ к значениям ответов?

Ответы [ 2 ]

1 голос
/ 02 июня 2010

Вы можете использовать window.ResponseWhatever = data.ResponseWhatever, однако, это не самая умная вещь, которую можно сделать. То, что вы хотите, это сделать что-то вроде этого:

function ActionProxy(action, input, callback){
    $.post("ActionProxy.php?method="+action, {data:input},
        function(data, textStatus, xhr){callback(data);});
}

Примечание: я не гуру jQuery, поэтому я мог неправильно получить некоторые части jQuery, но дело в том, что если вы хотите позвонить return data, вы вместо этого позвоните callback(data);.

0 голосов
/ 03 июня 2010

Ну, я сделал решение, предоставленное Alxandr. Оказывается, если я хочу получить результат, мне придется реализовать обратный вызов, но чтобы не заботиться о результате, я просто вызываю ActionProxy с первыми двумя аргументами и проверяю, присутствует ли функция обратного вызова следующим образом: * function ActionProxy(action, input, callback){</p> <p>$.post("ActionProxy.php?method="+action, {data:input}, function(data, textStatus, xhr){<br> if(callback){<br> callback(data); }<br> });</p> <p>}

Я бы ожидал ошибку при вызове функции с тремя аргументами с двумя аргументами. Ну да ладно - JavaScript это странный язык. :)

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