JQuery. Назначить JSON как результат переменной - PullRequest
2 голосов
/ 28 декабря 2010

Я использую эту вспомогательную функцию для получения результатов JSON для моих запросов:

function getData(url) {
    $.get(url,
         function(data) {
             response = data;
             return response;
         }, 'application/json');
}

Я даю ей некоторую строку в качестве части url из моего веб-приложения, например '/ api / getusers', поэтомувыглядит как getData('/api/getusers').Теперь мне нужно, чтобы этот строковый результат, содержащий данные JSON, которые я получаю с URL-адреса, был назначен моей переменной, чтобы он выглядел так: var result = getData('/api/getusers').Затем я обработаю эти данные JSON.Проблема заключается в возврате переменной ответа.Это не определено.Спасибо!

Ответы [ 3 ]

7 голосов
/ 28 декабря 2010

попробуйте

function getData(url) {
var data;
    $.ajax({
        async: false, //thats the trick
        url: 'http://www.example.com',
        dataType: 'json',
        success: function(response){
           data = response;
        }
    });
    return data;
}
6 голосов
/ 28 декабря 2010

Это асинхронная операция, означающая, что function(data) { ... } запускается позже , когда ответ от сервера доступен, еще долго после того, как вы вернулись с getData().Вместо этого, отбросьте все, что вам нужно от этой функции, например:

function getData(url, callback) {
    $.get(url, callback, 'application/json');
}

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

getData("myPage.php", function(data) {
  alert("The data returned was: " + data);
});
1 голос
/ 28 декабря 2010

Используйте $ .ajax

$.ajax({
    url: 'http://www.example.com',
    dataType: 'json',
    success: function(data){
       alert(data.Id);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...