перемещение данных в $ .ajax вышло? - PullRequest
3 голосов
/ 23 января 2012

Я хочу переместить переменную data в функцию out of success для другой операции.

$("a[class=note]").click(function( evt ){
                    var note = $(this).attr("value");
                    var preid = $(this).attr("id");
                    $.ajax({
                        type: 'GET',
                        url: 'style/ajax.php',
                        data: 'do=note&value=' + note + '&preid=' + preid,
                        success: function(data)
                        {
                            alert(data);
                        }
                    });
                });

Например, php имеет Global pharase ..

Ответы [ 3 ]

2 голосов
/ 23 января 2012

Определите var data = null; над всем вашим кодом, который будет глобальной переменной. После этого переименуйте аргумент для функции процесса и в теле функции window.data = response;.

EDIT

Вы можете определить функцию для запуска изменений данных, например:

var data = null;

function setGlobal(v) {
    window.data = v;
    alert(window.data);
}

$("a[class=note]").click(function( evt ){
    var note = $(this).attr("value");
    var preid = $(this).attr("id");
    $.ajax({
        type: 'GET',
        url: 'style/ajax.php',
        data: 'do=note&value=' + note + '&preid=' + preid,
        success: function(data){
            setGlobal(data);
        }
    });
});

Попробуй ...

2 голосов
/ 23 января 2012

global var (что является худшим решением, но это то, что вы просили):

$("a.note").click(function( evt ){
                var note = $(this).attr("value");
                var preid = $(this).attr("id");
                $.ajax({
                    type: 'GET',
                    url: 'style/ajax.php',
                    data: 'do=note&value=' + note + '&preid=' + preid,
                    success: function(data)
                    {
                        window.data = data;
                        alert(data);
                    }
                });
            });

глобальные переменные опасны. Может быть, переменной вне области успеха достаточно?
Var вне success обратного вызова:

$("a.note").click(function( evt ){
                var note = $(this).attr("value");
                var preid = $(this).attr("id");
                var dataFromServer = null;
                $.ajax({
                    type: 'GET',
                    url: 'style/ajax.php',
                    data: 'do=note&value=' + note + '&preid=' + preid,
                    success: function(data)
                    {
                        dataFromServer = data;
                        alert(data);
                    }
                });
            });

Последний вариант - иметь скрытый вход для хранения данных;

                    success: function(data)
                    {
                        $('#hiddenFieldId').val(data);
                        alert(data);
                    }

На что обратить внимание:

  1. Я изменил ваш селектор с a[class=note] на a.note, что лучше.
  2. success является обратным вызовом , что означает, что он не будет запущен до тех пор, пока ответ не достигнет клиента, пока ваше глобальное \ outside var \ hidden входное значение не будет равно нулю. если вы не хотите, чтобы ajax был asynchronous, вы можете определить его в следующих опциях:

  $.ajax({
    async: false, //  <---
    type: 'GET',
    url: 'style/ajax.php',
    data: 'do=note&value=' + note + '&preid=' + preid,
    success: function(data)
    {
        dataFromServer = data;
        alert(data);
    }
});           
2 голосов
/ 23 января 2012
$("a[class=note]").click(function( evt ){
                    var note = $(this).attr("value");
                    var preid = $(this).attr("id");
                    $.ajax({
                        type: 'GET',
                        url: 'style/ajax.php',
                        data: 'do=note&value=' + note + '&preid=' + preid,
                        success: function(data)
                        {
                            window.data = data;
                        }
                    });
                });

Конечно, вы не можете использовать его, пока не сработает обратный вызов.

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