область видимости переменной javascript - PullRequest
0 голосов
/ 20 декабря 2011

это может быть довольно просто, но я не могу найти свой путь ... У меня есть код js (jQuery), который выглядит следующим образом:

function publicCheck(research, $clicked) {
var result = null;
$.ajax({
    type: "POST",
    data: "research="+research+ "&action=check",
    url: "ajax_check.pl",
    success: function (msg) {
            if (something ...) {
            result = "ok";
            }
            });
     return result;
     }

=> теперь, почему я получаю нулевое значение, возвращаемое каждый развремя (я знаю, что мое состояние работает нормально).Это должно быть проблемой.Почему результат не "хорошо", но всегда равен нулю, даже если условие действительно?

Ответы [ 3 ]

3 голосов
/ 20 декабря 2011

Не пытайтесь быть злым, но вы должны посмотреть немного, прежде чем задавать вопросы, это очень распространенный, вот ответ на аналогичный вопрос:

Область видимости переменной в объекте Javascript

Если у вас есть дополнительные сомнения, мы можем помочь вам.

2 голосов
/ 20 декабря 2011

$.ajax() - это асинхронный вызов, вы не можете получить такой результат, если не предоставите параметр

async: false

Это не рекомендуется, и ваш браузер будет зависать до тех пор, пока вы не получите ответ.

Лучше, если вы предоставите обратный вызов для возврата

function publicCheck(research, $clicked, callback) {
    $.ajax({
        type: "POST",
        data: "research=" + research + "&action=check",
        url: "ajax_check.pl",
        success: function (msg) {
            if (something...) {
                callback("ok");
            }
        }
    });
}

ИСПОЛЬЗОВАНИЕ:

publicCheck(research, $clicked, function(status) {
   alert(status); // yeilds ok
});
0 голосов
/ 20 декабря 2011

Поскольку вы используете вызов AJAX, он выполняется асинхронно. jQuery делает использование AJAX настолько простым, что возникает соблазн не тратить время на его понимание. Пожалуйста, найдите время, чтобы понять асинхронную природу AJAX, вы получите от этого большую пользу.

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