jquery noob:无法解析json

时间:2011-01-04 16:12:11

标签: jquery arrays json

我是一位经验丰富的.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来访问值的web服务,然后id使用一些循环将它们添加到select

的选项中

非常感谢你的时间和耐心

3 个答案:

答案 0 :(得分:3)

'[{"Foo": "Bar"}]'定义字符串。要定义数组,请删除引号:[{"Foo": "Bar"}]。就像在C#中一样。

您还可以使用eval在字符串中执行js代码(特别是将json字符串转换为js对象)。 eval('([1, 2])')返回数组[1, 2] 既然你说你打算从Web服务中获取这个字符串,那么它可能很有用。

About eval

答案 1 :(得分:2)

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

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

基本上放下单引号:)

干杯

-G。

答案 2 :(得分:2)

您将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变量中。当您通过AJAX函数加载JSON字符串时,jQuery会自动为您完成。

但是,您的代码段未使用JSON在程序或计算机之间交换数据。因此,您并不真正需要JSON:您可以直接传递值,就像传递整数一样。