Подтвердить что ты не робот

Возвращаемое значение jQuery ajax

Как я могу вернуть значение " pinNumber" из jquery ajax, поэтому я могу добавить его вне ajax. Вот мой код

var x = pinLast + 1;
    for(i=x;i<=pinMany;i++) {
        var i = x++;
        var cardNumber = i.toPrecision(8).split('.').reverse().join('');
        var pinNumber = '';

        jQuery.ajax({
            type: "POST",
            url: "data.php",
            data: "request_type=generator",
            async: false,
            success: function(msg){
                var pinNumber = msg;
                return pinNumber;
                //pin number should return
            }
        });

        jQuery('.pin_generated_table').append(cardNumber+' = '+pinNumber+'
'); // the variable pinNumber should be able to go here }

Спроси меня, если ты не понимаешь.. ^^ спасибо

4b9b3361

Ответ 1

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

Вы должны предоставить реальную функцию обратного вызова обработчику success: и поместите туда свою программную логику.

Ответ 2

var pinNumber = $.ajax({
    type: "POST",
    url: "data.php",
    data: "request_type=generator",
    async: false
}).responseText;
jQuery('.pin_generated_table').append(cardNumber+' = '+pinNumber+' ');

Ответ 3

Это связано с областью переменных. Локальная переменная pinNumber, которую вы создаете, недоступна вне ее оберточной функции.

Возможно, объявите pinNumber глобально, или если он сделает трюк, просто вставьте свой .append() в свою функцию успеха.

Ответ 4

var _successEvent = function(response){
    $('.pin_generated_table').append(cardNumber + ' = ' + response);
};

$.ajax({
    type: "POST",
    url: "data.php",
    data: "request_type=generator"
}).done(_successEvent);

Ответ 5

Вы можете использовать этот пример:

window.variable = 'some data';

Это сделает вас переменной глобальной и вы можете получить доступ к ней из любой точки

Ответ 6

Вот простое решение.

    //---------------------------Ajax class ------------------------------//
    function AjaxUtil()
    {
            this.postAjax = function(Data,url,callback)
            {
              $.ajax({
                 url: url,
                 async: true,     //must be syncronous request! or not return ajax results
                 type: 'POST',
                 data: Data,
                 dataType: 'json',
                 success: function(json)
                 {
                     callback(json);
                 }
               });
            }//--end postAjax
    }
    //--------------------------------End class--------------------//
    var ajaxutil = new AjaxUtil();

    function callback(response)
    {
          alert(response); //response data from ajax call
    }

  var data={};
  data.yourdata = 'anydata';
  var url = 'data.php';

  ajaxutil.postAJax(data,url,callback);