2010-04-03 92 views
0

我寫了這樣的somethinh,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文件,後來我分析它在這條路上,以填補選擇選項

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

使用jQuery形式pluing,一切工作正常,除了這個,我不能解析數據爲選擇選項元素。我嘗試和php中的json_encode。有人可以幫忙嗎?

回答

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屬性來訪問該數組。

+0

給我第二次嘗試,對不起,我是新的jquery和json,tnx的答案 – user147 2010-04-03 06:28:28