jquery.post и переменная область

0

Я новичок в javascript и имею следующую проблему. Я хочу загрузить json из api.php и добиться успеха с возвращаемым значением, чтобы заполнить мой графический интерфейс.

    $( '#data_button' ).click(function() {
    $.post( 'api.php', function( data ) { json = data; });
    $('#data1').empty().append( json[0].name + ' | ' + json[1].name );
});

Поэтому я хочу нажать кнопку, после чего он выберет через почту некоторые данные и сохранит их в переменных данных. Как это должен быть объект (объект json?), Я думал, что просто могу использовать его, как указано выше... Но это не работает. Консоль говорит: не могу найти переменную json.

Любые намеки?

  • 0
    Это не имеет ничего общего с областью действия, только с временем. Пожалуйста, ознакомьтесь с разделом Как вернуть ответ от вызова AJAX?
  • 1
    Я бы посоветовал вам прочитать об асинхронном программировании и области функций JavaScript.
Теги:

2 ответа

2
Лучший ответ

jquery post по умолчанию работает асинхронно, что означает, что строка:

$('#data1').empty().append( json[0].name + ' | ' + json[1].name );

происходят до того, как почтовый запрос вернет данные.

это как это сделать:

$( '#data_button' ).click(function() {
     $.post( 'api.php', function( data ) { 
         $('#data1').empty().append( data[0].name + ' | ' + data[1].name );
     });
});
  • 0
    Спасибо вам всем! Было слишком поздно ... и слишком очевидно.
2

У вас есть добавление за пределами функции обратного вызова. Попробуй это:

$( '#data_button' ).click(function() {
    $.post( 'api.php', function( data ) { 
        json = data; 
        $('#data1').empty().append( json[0].name + ' | ' + json[1].name );
     });
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню