我是一位经验丰富的.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
的选项中非常感谢你的时间和耐心
答案 0 :(得分:3)
'[{"Foo": "Bar"}]'
定义字符串。要定义数组,请删除引号:[{"Foo": "Bar"}]
。就像在C#中一样。
您还可以使用eval
在字符串中执行js代码(特别是将json字符串转换为js对象)。 eval('([1, 2])')
返回数组[1, 2]
既然你说你打算从Web服务中获取这个字符串,那么它可能很有用。
答案 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:您可以直接传递值,就像传递整数一样。