Как получить доступ к удаленным данным JSON как локальный массив - PullRequest
2 голосов
/ 21 августа 2009

Я могу использовать функцию $ .get Jquery для доступа к данным JSON с другого URL, но как я могу использовать эти данные (в виде массива) в другом месте моего кода?

Рассмотрим следующий код:

    <script type="text/javascript">
    $(function () {        

    $.get("/some/other/url/that/returns/json", function(data){
        var d = eval(data);
    });

    alert(d);
    </script>

Это не работает, но это показывает, что я хотел бы сделать. Заранее спасибо за вашу помощь / советы.

Ответы [ 3 ]

3 голосов
/ 21 августа 2009

Делаем это:

<script type="text/javascript">
var d;

$.get("/some/other/url/that/returns/json", function(json){
    d = json;
}, "json");
</script>

вы получите ответ json, и если он уже является массивом, вам больше не нужно ничего делать. Также, пожалуйста, используйте eval() как можно меньше . (Совсем не отлично)

Будьте осторожны, d не будет иметь значения до тех пор, пока не получит ответ, поэтому ваш код должен с этим справиться. Скорее всего, вы вызовете функцию, которая использует d из $ .get ("...", function (json) {} , "json").

<script type="text/javascript">
var d;

useArray = function(d){
    //Operations that involve the response
}

$.get("/some/other/url/that/returns/json", function(json){
    d = json;
    // Operate over "d" once your server
    useArray(d); 
}, "json");
</script>

Конечно, поскольку теперь у вас есть все операции над d для отдельной функции, вы можете просто сделать это

<script type="text/javascript">
useArray = function(d){
    //Operations that involve the response
}
$.get("/some/other/url/that/returns/json", function(json){
    useArray(json);
}, "json");
</script>

Если вам нужно снова получить доступ к d, вам следует изменить свой код по мере необходимости. Это только руководство.

0 голосов
/ 05 октября 2009

К вашему сведению, вы можете добавить аргумент type к вашему вызову и избежать eval: $ .get ('url', function (data) {...}, 'json')

Или вы можете использовать $ .getJSON ('url', function (data) {...});

0 голосов
/ 21 августа 2009

делает d глобальной переменной. Или назначьте его тому, что нужно для его использования.

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