我想在Json回调中定义一个变量。
代码;
$("select").change(function () {
var $variable = "";
$("select option:selected").each(function () {
$variable += $(this).text() + " ";
});
$("div.yaz").text($variable);
$('#result').html('loading...');
$.getJSON('program-bilgileri.php', function(JSON){
$('#result').empty();
$.each(JSON.$variable, function(i, program){
$('#result')
.append(program.isim +'<br />')
.append(program.bilgi+'<br />')
.append(program.adres+'<hr />');
});
});
})
.trigger('change');
program-bilgileri.php返回;
{
"programlar":[
{
"isim":"Zone Alarm",
"bilgi":"bilgisayarın güvenliğini sağlar",
"adres":"www.zonealarm.com"
},
{
"isim":"Opera",
"bilgi":"güvenli ve hızlı bir web tarayıcısıdır",
"adres":"www.opera.com"
},
{
"isim":"Photoshop",
"bilgi":"güçlü bir imaj işleme yazılımıdır",
"adres":"www.adobe.com"
}
]
}
问题在于“$ .each(JSON。$ variable,function(i,program)”如果我在JSON中定义$ variable它不起作用。
有什么想法吗?
答案 0 :(得分:1)
我看到的问题是
change
的{{1}}活动中查找页面中的所有$("select option:selected")
元素,而不是仅更改过的元素。select
。$(this).children('option:selected')
元素上进行多项选择,这就是您使用select
进行+=
的原因..(您还添加了一个最后的空间)。但这意味着变量将类似于$variable
或"programlar "
。
您返回的JSON的密钥为"programlar somethingelse"
。一个单词,没有空格..所以当你programlar
这是根据变量中的名称访问元素的正确方法时,它就不匹配。如果JSON[$variable]
元素不允许多项选择,则解决方案为
<select>
如果确实是多选,并且每个选项都可以出现在JSON中,那么您必须检查变量中找到的每个选项。
$("select").change(function() {
var $variable = $(this).children("option:selected").text();
$("div.yaz").text( $variable );
$('#result').html('loading...');
$.getJSON('program-bilgileri.php', function(JSON) {
$('#result').empty();
$.each(JSON[$variable], function(i, program) {
$('#result')
.append(program.isim + '<br />')
.append(program.bilgi + '<br />')
.append(program.adres + '<hr />');
});
});
}).trigger('change');
答案 1 :(得分:0)
尝试
$.each(JSON['programlar'], function(i, program) ... );
这将从PHP迭代这部分返回的JSON对象:
{
"isim":"Zone Alarm",
"bilgi":"bilgisayarın güvenliğini sağlar",
"adres":"www.zonealarm.com"
},
{
"isim":"Opera",
"bilgi":"güvenli ve hızlı bir web tarayıcısıdır",
"adres":"www.opera.com"
},
{
"isim":"Photoshop",
"bilgi":"güçlü bir imaj işleme yazılımıdır",
"adres":"www.adobe.com"
}