填充选择列表菜单,通过Ajax Jquery

在任何人说这是这个和那个问题的重复之前,让我向你保证我已经尝试过那里的解决方案而且我失败了。 我正在使用本网站提供的解决方案来提出我的解决方案,我相信除了一个错误,我完成了90%。 我想显示具有与之关联的特定公共ID的所有代码的列表。

这是我用来获取代码列表的PHP代码

query($selectcodes); $count=$query->num_rows; if($count fetch_array()){ $T1=($row['T1']); $T2=($row['T2']); $T3=($row['T3']); $T4=($row['T4']); $optionValue = $T1."-".$T2."-".$T3."-".$T4; echo json_encode("$optionValue 

这是我用来获取代码的ajax调用

 $.post("Functions/getbudgetcodes.php",{budgetcode:budgetid},function(data){ if(data!='0') { $("#budgetcode").html(data).show(); $("#result").html(''); } else{ $("#result").html('No codes found. Contact Administrator'); } },'json') //alert(budgetid); }) 

这里的问题是,如果jquery不是数字,它不会理解它正在接收的数据。 例如,如果我注释掉json_encode(’1’)并在我的成功部分中放入随机的html代码而不是数据,我会在浏览器中显示结果。 任何人都可以告诉我为什么jquery只识别从PHP回应的数值而不是varchar值。 使用jquery 1.4.2。 任何帮助赞赏。

编辑
我已经管理到了一点,现在我被卡住了。 我使用过John的答案,这是我的jquery代码。 我只需要拆分数组并将每个元素一次追加到一个变量中,就像这里一样

这是代码。 有人请告诉我如何拆分(数据)。 我可以提醒它但它是逗号分隔的。 只需要将各个项目附加到变量html然后显示它。

 $.post("Functions/getbudgetcodes.php",{budgetcode:budgetid},function(data){ if(!$.isEmptyObject(data)) { //alert (data); // alert(split (data)) var html = ''; var len = data.length; for (var i = 0; i< len; i++) { html += '' +data+ ''; } $("#budgetcode").html(html).show(); $("#result").html(''); } else{ $("#result").html('No codes found. Contact Administrator'); } },'json') 

我会完全跳过JSON:

PHP

 echo ""; 

其他一切都应该有效。

终于想通了。 这是php代码

 $selectcodes="SELECT * FROM tblbudget_codes WHERE T1 = $budgetcode"; $query=$connection->query($selectcodes); $count=$query->num_rows; if($count < 1) { die('0'); } else{ while($row=$query->fetch_array()){ $data[] = $row; } echo json_encode($data); } ?> 

这是jquery代码

 $.post("Functions/getbudgetcodes.php",{budgetcode:budgetid},function(data){ if(!$.isEmptyObject(data)) { //alert (data); var html = ''; var joiner=''; var len = data.length; for (var i = 0; i< len; i++) { joiner=([data[i].T1,data[i].T2,data[i].T3, data[i].T4].join('-')); //alert(joiner); html += ''; } $("#budgetcode").html(html).show(); $("#result").html(''); } else{ $("#result").html('No codes found. Contact Administrator'); } },'json') 

必须使用连接来使用破折号加入多个代码。 希望这可以帮助。 PHP部分和jquery的一部分受到了这个问题的启发

FWIW,为了填充选择列表,我通常使用以下jQuery代码:

//从作为对象给出的项目数组中填充选择列表:{name:’text’,value:’value’} function populateSelectList(parent,items){parent.options.length = 0;

  if (parent.options.length === 0) { parent.options[0] = new Option("Please select something...", ""); } $.each(items, function (i) { if (typeof (this) == 'undefined') { return; } parent.options[el.options.length] = new Option(this.name, this.value); }); } 

并且为了调用上面的函数,我使用map方法传递ajax调用的结果,其中#select是父选择元素的选择器。 我将Text属性设置为name和Value,但是应该根据ajax调用返回的对象进行更改(例如,假设返回的对象具有Value和Text属性)。

populateSelectList($(’#select’)。get(0),$。map(results,function(result){return {name:result.Text,value:result.Value}}));