JQuery Noob: не может разобрать JSON - PullRequest
1 голос
/ 04 января 2011

я опытный разработчик .net, но только что познакомился с jquery.

я пытаюсь заполнить выпадающий список с помощью jquery

это не работает, поэтому я сначала пытаюсь что-то базовое

<script type="text/javascript">
    $(document).ready(function () {
        $('select[name*="edtPersonID"]').change(function () {
            fillAddresses('[{"Foo": "Bar"}]');
        });
    });
    function fillAddresses(jsRes) {
        alert(jsRes[0].Foo);
    }
</script>

насколько я читал, "jsRes" должен быть каким-то образом преобразован в массив, чтобы jsRes [0] возвращал первый объект в массиве

но то, что на самом деле приносит предупреждение, просто «неопределено»

если я проверяю jsRes [0], он равен «[», что означает, что он считается строкой, а не массивом

как это можно исправить?

код завершения, вероятно, будет использовать getJson для доступа к веб-сервису для значений, а затем id использует некоторый цикл, чтобы добавить их к опциям выбора

Большое спасибо за ваше время и терпение

Ответы [ 3 ]

3 голосов
/ 04 января 2011

'[{"Foo": "Bar"}]' определяет строку. Чтобы определить массив, удалите кавычки: [{"Foo": "Bar"}]. Как в C #.

Вы также можете использовать eval для выполнения кода js в строке (и, в частности, для преобразования строки json в объект js). eval('([1, 2])') возвращает массив [1, 2].
Поскольку вы сказали, что планируете получить эту строку из веб-службы, это может быть полезно.

О Eval

2 голосов
/ 04 января 2011

Вы путаете литеральные объекты JavaScript с JSON. В JavaScript вы можете определить объект с помощью нотации {}, например ::

var president = {
    name: "John",
    age: 33
};

И есть формат обмена данными, называемый JSON, который использует подмножество синтаксиса JavaScript для кодирования:

{"name":"John","age":33}

Когда строка JSON достигает вашей программы JavaScript, это просто строка:

var json = '{"name":"John","age":33}';

... не отличается от любой другой строки:

var notJson = 'Hello, World!';

Со временем и способностями вы можете использовать функции обработки строк JavaScript для анализа этой строки и извлечения исходных значений, закодированных в строке, в обычные переменные JavaScript. jQuery делает это автоматически, когда вы загружаете строку JSON через функции AJAX.

Однако ваш фрагмент кода не использует JSON для обмена данными между программами или компьютерами. Таким образом, вам на самом деле не нужен JSON: вы можете передавать значения напрямую, так же, как и целое число.

2 голосов
/ 04 января 2011
fillAddresses('[{"Foo": "Bar"}]');

до

fillAddresses([{"Foo": "Bar"}]);

в основном отбрасывать одинарные кавычки:)

Приветствия

G.

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