1

尽管有其他类似的例子,我不能完全让这个每个循环来填充一个选择列表......但我真的很接近!

根据我之前的问题,我使用 PHP 脚本返回一个 json 数组,基于另一个得到部分回答的问题。脚本 getStudyNames.php 返回此 json 数组:

[{"studyindex":"1","studyname":"ADHD"},{"studyindex":"24","studyname":"ADHD_RD"},{"studyindex":"20","studyname":"AFL"},{"studyindex":"42","studyname":"AFRICANERS"},{"studyindex":"2","studyname":"AHD"},{"studyindex":"22","studyname":"AJS"},{"studyindex":"3","studyname":"ASA-FS"},{"studyindex":"4","studyname":"ASIAN"},{"studyindex":"5","studyname":"AUS TWINS"},...]

但是,我似乎不太了解如何解析此数组的语法正确,然后将其添加到选择列表中。

这是我尝试执行此操作的代码:

$.ajax({                                      
      url: 'getStudyNames.php',        //the script to call to get data          
      data: "",                        //you can insert url argumnets here to pass to api.php
                                       //for example "id=5&parent=6"
      dataType: 'json',                //data format
      error: function() {
        alert('Refresh of study names failed.');
      },
      success: function(data)          //on receipt of reply
      { 
        var $studylist = $('#studylist').empty();
        $data.each(data, function(i, record) {
          $studylist.append('<option value='.record.studyindex.'>'.html(record.studyname) );
        })
       } 
    });

根据上面的输出,我知道 getStudyNames.php 有效;但是为什么这个学习列表不起作用对我来说仍然是一个谜......感谢任何帮助!

4

3 回答 3

2

看起来附加中有一些拼写错误,并且句点不用于 javascript 中的集中,即 PHP,而在 javascript 中这将是+标志。

尝试先创建元素,以便更容易查看发生了什么,然后附加它:

$.each(data, function(i, record) {
  var elem = $('<option />', {value: record.studyindex, html: record.studyname});
  $studylist.append(elem);
});
于 2012-12-11T21:44:35.340 回答
1

$data.each(data, function)

应该

$.each(data, function)

.html()错误地嵌套在.append()

你没有关闭你的<option>

'<option value='.record.studyindex.'>'

应该

'<option value=' + record.studyindex + '>'

于 2012-12-11T21:51:36.800 回答
1

尝试将以下内容放入success.

var $studylist = $('#studylist').empty();
$.each(data, function(i, record) {
   $studylist.append($("<option/>", {
        value: record.studyindex,
        text: record.studyname
    }));
});
于 2012-12-11T21:52:23.093 回答