jQuery: загрузка URL-адреса ajax как переменной? - PullRequest
1 голос
/ 12 декабря 2010

В прошлом я всегда использовал функцию обратного вызова в функции getJson для обработки извлеченных данных, но, поскольку я хочу сохранить извлеченные данные как переменную, чтобы предотвратить их повторную выборку, я запустил на некоторые странные вопросы. Пробуя следующий код, я начинаю получать эту ошибку в firebug; Permission denied for <http://localhost> to get property XMLHttpRequest.channel

Я делаю это неправильно, пытаясь сделать это без функции обратного вызова?

function fetch(){
    var returndata = $.getJSON( 'http://localhost/api/get/1' );

    formatDataset(returndata);
}

function formatDataset(data){
    var row = '';

    $.each(data, function(){
        row += this.name + '<br>';
    });

    $('#myDiv').html(row);
}

Ответы [ 2 ]

1 голос
/ 13 декабря 2010

это неправильно в вашем коде

var returndata = $.getJSON( 'http://localhost/api/get/1' );

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

если вы хотите что-то сделать, напишите код в обработчике succcess getjson

0 голосов
/ 13 декабря 2010

Да, вы правы в своем вопросе, где вы спрашиваете об обратном вызове.Функция $ .getJSON возвращает XMLHttpRequest, а не данные.Так что попробуйте что-то вроде:

var returndata;
function fetch(){
    if (!returndata) {
        $.getJSON( 'http://localhost/api/get/1', function(data) {
            returndata = data; 
            formatDataset(returndata);
        });
        return;
    }
    formatDataset(returndata);
 }
...