【发布时间】:2013-06-14 15:52:47
【问题描述】:
在有人说这是这个和那个问题的重复之前,让我向你保证,我已经尝试了那里的解决方案,但我失败了。我正在使用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。任何帮助表示赞赏。
编辑
我已经达到了一定程度,现在我被卡住了。我用过约翰的答案,这是我的 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')
【问题讨论】:
-
您对什么是 JSON 编码有某种误解。像这样单独对 HTML 选项标签进行编码是没有意义的。 JSON 用于将 数据结构 序列化为可解析的字符串形式。
-
此外,一旦您实际上将 JSON 返回到使用“$.post()”发起的请求,您将不得不显式调用
$.parseJSON()来解析(反序列化)它。 -
这里存在明显的SQL注入风险。在将
$budgetcodevar 传递到 SQL 查询字符串之前,请正确转义它。 -
@Max,你也忘了关闭
</option>标签。 -
@FrostyZ 谢谢你。会对其进行消毒。