JSON选择选项问题?

时间:2010-04-03 06:02:27

标签: json

我写了这样的东西,

`$ sql =“SELECT * FROM dbase”;

    $strOptions = "";

    if (!$q=mysql_query($sql)) {
        $strOptions = "<option>There was an error connecting to database</option>";
    }
    if (mysql_num_rows($q)==0) {
        $strOptions = "<option>There are no news in database</option>";
    }else {
        $a=0;
        while ($redak=mysql_fetch_assoc($q)) {
            $a=$a+1;
            $vvvv[$a]["id"]=$redak["id"];
            $vvvv[$a]["ssss"]=$redak["ssss"];
        }
    }
    for ($i=1; $i<=$a; $i++) {
        $strOptions = $strOptions. '<option value="'. $vvvv[$i]["id"] .'">'.$i.'.) - '.strip_tags($vvvv[$i]["ssss"]).'</option>';
    }


    echo '[{ "message": "3" },{ "message": "' . count($wpdb->get_results("SELECT * FROM dbase")) . '" },{ "message": "'.$strOptions .'"}]';`

我以后不能解析json文件,后来我用这种方式解析它来填充select-option

$jq("#select-my").children().remove();
        $jq("#select-my").append(data[2].message);

我使用jquery表单,一切正常,除此之外,我无法解析select-option元素的数据。我试着用php中的json_encode。有人帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果我正在阅读你的PHP,你的JSON最终看起来像这样:

[{ "message": "3" },{ "message": "(count_goes_here)" },{ "message": "(options_go_here)"}]

JSON字符串的顶级必须是匿名对象,而不是数组(details)。所以这是有效的:

{"test": ["one", "two", "three"]}

但阵列本身不是:

["one", "two", "three"]

要修复它,只需将数组包装在一个对象中:

{"values": [{ "message": "3" },{ "message": "(count_goes_here)" },{ "message": "(options_go_here)"}]}

...然后当您对JSON字符串进行反序列化时,使用生成的对象的values属性来访问该数组。