【发布时间】:2015-08-17 04:33:26
【问题描述】:
对 getJSON 的一次调用,就可以正常工作...
<div class="col-sm-3 col-xs-12" >
<label for="pickers" >Picker</label>
<select name="Picker" id="selectPicker" class="form-control" ></select>
<label for="grinners" >Grinner</label>
<select name="Grinner" id="selectGrinner" class="form-control" ></select>
</div>
<script>
$( document ).ready( function() {
//pickers
$.getJSON( '/people.php', { get:'pickers' }, function( p ){
var pOptions = '';
for ( var pi=0; pi<=k['DATA'].length; pi++ ) {
pOptions += '<option value="' + p['DATA'][pi][0] + '">' + p['DATA'][pi][1] + ' (' + p['DATA'][pi][2] + ')</option>';
}
$( '#selectPicker' ).html( pOptions );
});
});
</script>
但是 - 当我添加另一个调用时,这两个调用都中断了,我得到了调用,并且响应很好,正在返回 JSON 对象,但 UI 没有填充选择...
上面的作品,如果我添加这个(下面)它会破坏两个选择...... 我已经将所有变量命名为不同的,所以我不应该遇到任何冲突......
<script>
$( document ).ready( function() {
//pickers
$.getJSON( '/people.php', { get:'pickers' }, function( p ){
var pOptions = '';
for ( var pi=0; pi<=k['DATA'].length; pi++ ) {
pOptions += '<option value="' + p['DATA'][pi][0] + '">' + p['DATA'][pi][1] + ' (' + p['DATA'][pi][2] + ')</option>';
}
$( '#selectPicker' ).html( pOptions );
});
//grinners
$.getJSON( '/people.php', { get:'grinners' }, function( g ){
var gOptions = '';
for ( var gi=0; gi<=g['DATA'].length; gi++ ) {
gOptions += '<option value="' + g['DATA'][gi][0] + '">' + g['DATA'][gi][1] + ' (' + g['DATA'][gi][2] + ')</option>';
}
$( '#selectGrinner' ).html( gOptions );
});
});
</script>
JSON 看起来像这样(仅供参考):
选择器;
{
"COLUMNS":["ID","PERSON","POSITION"],
"DATA":[[1,"Jo Bob","Banjo"],[2,"Garth Waller","jug"],[3,"Boswell Higgins","washboard"]]
}
笑脸;
{
"COLUMNS":["ID","PERSON","RELATION"],
"DATA":[[1,"Jimmy John","Grand-pappy"],[2,"Margie Monroe","Grammy"],[3,"'big' Tom Turney","cousin/brother"]]
}
【问题讨论】:
-
我不确定,但问题一定是因为 URL 捕获
-
您应该检查插入到 dom 中的内容。可能是插入的某些字符没有转义,因此破坏了 dom 结构。
-
您在
pickersfor上有错字,循环k['DATA']应该是p['DATA'] -
你会为此提供一些虚假数据吗?控制台中是否有任何 javascript 错误?
-
你的JSON和上面的完全一样吗?使用
console.log(g['DATA'].length)会得到什么?