js讀取json數據(php傳值給js)


 

  1. <?php 
  2. $array =array('fds','fdsa','fdsafasd');  // json_encode($array); 
  3. ?> 
  4.  
  5. <html> 
  6. <head> 
  7. <script type="text/javascript"> 
  8. var readpoint = <?php echo json_encode($array);?>; //***注意不要用引號,如果用了json存儲的數組就成字符串了。另外如果有鍵名要以對象的形式彈出如readpoint.id 
  9. alert(readpoint[0]);//fds 
  10. </script> 
  11. </head> 
  12. </html> 

通過JSON(測試成功) 因為JS能識別JSON格式的數據(php跟js的共同點所以這樣傳值才有效,那xml呢也許可以就算可以也會比較麻煩不提倡。用json就是為了方便否則直接用字符串傳也是一樣用JS把字符串在還原成數組。)

如果不用JSON的話,本人也嘗試過但沒有測試成功。彈出某個元素的時候會出現未定義的錯誤。(測試失敗)

當然我們也可以不用賦值直接在js里使用PHP數組(測試成功)。 ***注意前提是賦值數組不是某個變量***

-----------------------------------------------------

(參考) 如果出現一下問題的話 。本人通過上面方法就可以實現了

json 是一個很好的數據結構現在已經廣泛用在網絡數據傳輸上

php 自身待了兩個和json 相關的函數
json_encode 和 json_decode

這兩個函數的具體用法 網上有很多相關的文章
本文主要介紹 用json_encode 時 中文無法轉換的解決方案

本文假設 文件所用的編碼為gb2312;

先寫出所需的數組


  1. <?php 
  2. $json = array ( 
  3. 0 => 
  4. array ( 
  5. 'id' => '13', 
  6. 'name' => '乒乓球', 
  7. ), 
  8. 1 => 
  9. array ( 
  10. 'id' => '17', 
  11. 'name' => '籃球', 
  12. ?> 

如果直接用函數json_encode


  1. <?php 
  2. echo json_encode($json); 
  3. ?> 

結果為:


  1. <?php 
  2. [{"id":"13","name":null},{"id":"13","name":null}] 
  3. ?> 


可以看到漢字沒有被轉義 都為null

這是因為json僅僅轉義encoding編碼

故上面語句應該先轉換編碼


  1. <?php 
  2.  
  3. foreach ($ajax as $key=>$val) 
  4. $ajax[$key]['name'] = urlencode($val['name']); 
  5. echo json_encode($json); 
  6.  
  7. ?> 

客戶端js代碼



  1. <script type="text/javascript"> 
  2. function getsort(obj) 
  3. $.ajax( 
  4. type : "GET", 
  5. url : "<?=$this->baseUrl?>/index/getajax", 
  6. data : "c=" obj.value, 
  7. success : function(json) 
  8. var json=eval_r(json); 
  9.  
  10. var html = '<select>'; 
  11. $.each(json, function(k) 
  12. html = '<option value="' json[k]['id'] '">' decodeURI(json[k]['name']) '</option>'; 
  13. }); 
  14. html ="</select>"; 
  15. $('#sort').html(html); 
  16. </script> 


用上面的代碼js會報錯 說編碼不符合標准

原因是因為js 中decodeURI 僅僅支持utf8 轉碼
所以
php
代碼應該為下面的代碼
 
  1. <?php 
  2.  
  3. foreach ($ajax as $key=>$val) 
  4. $ajax[$key]['name'] = urlencode(iconv('gb2312','utf-8',$val['name'])); 
  5. echo json_encode($json); 
  6.  
  7. ?> 

-------------------------------------------------------------------

js讀取json數據

示例如下:

 
  1. <script type="text/javascript" language="javascript"> 
  2. var languages = { 
  3. cn:{ 
  4. lang:'ch', 
  5. name:"中文" 
  6. }, 
  7. en:{ 
  8. lang:"英文", 
  9. name:"en" 
  10. }; 
  11. document.write(languages.cn.name); 
  12. </script> 

=====================================================================
請問有沒有詳細的js讀取json的例子方法

//根據city獲得name
function getNameByCity(city)
{
var cityName =
{
"0556":"安慶市",
"0372":"安陽市",
};
return cityName[city];
}

(參考) =====================================================================
js 中讀取JSON的方法探討

js讀取JSON的方法我接觸到的有兩種:
方法一:函數構造定義法返回
var strJSON = "{name:'json name'}";//得到的JSON
var obj = new Function("return" + strJSON)();//轉換后的JSON對象
alert(obj.name);//json name

方法二:js中著名的eval函數
var strJSON = "{name:'json name'}";//得到的JSON
var obj = eval_r( "(" + strJSON + ")" );//轉換后的JSON對象
alert(obj.name);//json name

第二種方法需要注意的是,對象表達式{'name':'json name'}必須用“()”擴住,否則
var strJSON = "{name:'json name'}";
var obj = eval_r(strJSON);
alert(obj.constructor);//String 構造函數
alert(obj.name);//undefine
必須把對象表達式擴起來eval執行才能生成一個匿名對象!

(參考)--------------------------------------------------------------------------

下面json官方的js,結合ajax來讀取解釋json結構的數據。

 

  1. <script
  2. //直接聲明json數據結構 
  3. var myJSONObject = {"bindings": [ 
  4. {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}, 
  5. {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"}, 
  6. {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"} 
  7. }; 
  8.  
  9. alert(myJSONObject["bindings"][0].method);  
  10. //這里讀取節點bindings中第一個數組位置method的值,也可以使用循環來讀取 
  11.  
  12. for(var key in myJSONObject){ 
  13. alert(myJSONObject[key][0].regex) 
  14. </script

下面是json官方的js文件

<script src=\'#\'" /script>

// rtval的值:{"digg":[{"diggnum":"12","offnum":"0","pageviews":"680","username":"dodo"}]}

function callback(rtval){

var myJSONObject2=eval_r("("+rtval+")");
alert(myJSONObject2["digg"][0].diggnum)

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM