Php 将JSON返回数据追加到html中不起作用
我有一个脚本,它返回一个项目类别的子类别列表 但它似乎只有在Php 将JSON返回数据追加到html中不起作用,php,json,ajax,Php,Json,Ajax,我有一个脚本,它返回一个项目类别的子类别列表 但它似乎只有在j.lenth='0'(json数据=[])时才起作用 如果json返回数据(例如:[{optionValue:1,optionDisplay:'Sub cat 1'}]),脚本的else部分不工作 <script> $(function () { $("select#Category").change(function () { $.getJSON("/content/category.php", {
j.lenth='0'
(json数据=[])时才起作用
如果json返回数据(例如:[{optionValue:1,optionDisplay:'Sub cat 1'}]),脚本的else
部分不工作
<script>
$(function () {
$("select#Category").change(function () {
$.getJSON("/content/category.php", {
id: $(this).val()
},
function (j) {
var options = '';
if (j.length == '0') {
options = '<option value="-1">There is no sub category</option>';
} else {
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
}
}
$("#sub").html(options);
$('#intSubRubriek option:first').attr('selected', 'selected');
});
});
$(函数(){
$(“选择#类别”)。更改(函数(){
$.getJSON(“/content/category.php”{
id:$(this.val())
},
功能(j){
var选项=“”;
如果(j.length==“0”){
选项='没有子类别';
}否则{
对于(变量i=0;i
}));
category.php
<?php
$aCats = $oCon->dbFetchSmarty ( "SELECT * FROM `sub_category` WHERE parent_id = '" . $_GET['id'] . "' ");
if ( isset ( $_GET['id'] ) )
{
echo "[";
for ( $i = 0; $i < sizeof ( $aCats ); $i ++ )
{
if($i == 0)
{
echo "{optionValue: " . $aCats[$i]['sub_id'] . ", optionDisplay: '" . $aCats[$i]['sub_name'] . "'}";
}
else
{
echo ", {optionValue: " . $aCats[$i]['sub_id'] . ", optionDisplay: '" . $aCats[$i]['sub_name'] . "'}";
}
}
echo "]";
}
else
{
echo "[{optionValue: 0, optionDisplay: '". $_LANG['content']['categorien_1'] ."'}]";
}
?>
不是有效的JSON。应该是
[{ "optionValue": "1", "optionDisplay": "Sub cat 1" }]
这就是为什么只有当您得到一个空响应时,才会执行成功处理程序,[]
。当您得到一个包含项的响应时,实际上触发的是错误处理程序而不是成功处理程序,因为响应中没有有效的JSON。所以把你的代码改成
if ($i == 0) {
echo '{ "optionValue" : "'.$aCats[$i]['sub_id'].'", "optionDisplay": "'.$aCats[$i]['sub_name'].'"}';
} else {
echo ',{ "optionValue" : "'.$aCats[$i]['sub_id'].'", "optionDisplay": "'.$aCats[$i]['sub_name'].'"}';
}
定义“不工作”…@Naruto
不被追加(实际上,如果JSON返回数据,它不会被创建);。即使我在else子句中添加了alert(“万岁”),它也不起作用。
if ($i == 0) {
echo '{ "optionValue" : "'.$aCats[$i]['sub_id'].'", "optionDisplay": "'.$aCats[$i]['sub_name'].'"}';
} else {
echo ',{ "optionValue" : "'.$aCats[$i]['sub_id'].'", "optionDisplay": "'.$aCats[$i]['sub_name'].'"}';
}