在任何人说这是这个和那个问题的重复之前,让我向你保证我已经尝试了那里的解决方案,但我失败了。我正在使用this网站提供的解决方案来提出我的解决方案,我相信除了一个错误,我完成了90%。我想显示具有与之关联的特定公共ID的所有代码的列表。
这是我用来获取代码列表的PHP代码
<?php
$budgetcode=$_POST['budgetcode'];
//$budgetcode=2102;
$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()){
$T1=($row['T1']);
$T2=($row['T2']);
$T3=($row['T3']);
$T4=($row['T4']);
$optionValue = $T1."-".$T2."-".$T3."-".$T4;
echo json_encode("<option>$optionValue</option");
// echo json_encode('1');
}
}
?>
这是我用于获取代码的ajax调用
$.post("Functions/getbudgetcodes.php",{budgetcode:budgetid},function(data){
if(data!='0')
{
$("#budgetcode").html(data).show();
$("#result").html('');
}
else{
$("#result").html('<em>No codes found. Contact Administrator</em>');
}
},'json')
//alert(budgetid);
})
这里的问题是,如果jquery不是数字,它不会理解它正在接收的数据。例如,如果我注释掉json_encode('1')并在我的成功部分中放入随机html代码而不是数据,我会在浏览器中显示结果。任何人都可以告诉我为什么jquery只识别从PHP回应的数值而不是varchar值。使用jquery 1.4.2。任何帮助赞赏。
修改
我已经管理到了一点,现在我被卡住了。我使用过John的答案,这是我的jquery代码。我只需要拆分数组并将每个元素一次追加到一个变量,如here
这是代码。有人请告诉我如何拆分(数据)。我可以提醒它,但它是逗号分隔的。只需要让各个项目将它们附加到变量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 += '<option>' +data+ '</option>';
}
$("#budgetcode").html(html).show();
$("#result").html('');
}
else{
$("#result").html('<em>No codes found. Contact Administrator</em>');
}
},'json')
答案 0 :(得分:2)
我会完全跳过JSON:
echo "<option>$optionValue</option>";
其他一切都应该有用。
答案 1 :(得分:1)
终于明白了。这是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 += '<option>'+joiner+'</option>';
}
$("#budgetcode").html(html).show();
$("#result").html('');
}
else{
$("#result").html('<em>No codes found. Contact Administrator</em>');
}
},'json')
必须使用联接来使用破折号加入多个代码。希望这可以帮助。 PHP部分和jquery的一部分受到this问题
的启发答案 2 :(得分:0)
FWIW,为了填充选择列表,我通常使用以下jQuery代码:
//从作为对象给出的项目数组中填充选择列表:{ 名称:&#39;文字&#39;,价值:&#39;价值&#39; } 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($(&#39; #select&#39;)。get(0),$ .map(结果,功能 (结果){return {name:result.Text,value:result.Value}}));