Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将JSON返回数据追加到html中不起作用_Php_Json_Ajax - Fatal编程技术网

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'].'"}';
}