- <?php
- $array =array('fds','fdsa','fdsafasd'); // json_encode($array);
- ?>
- <html>
- <head>
- <script type="text/javascript">
- var readpoint = <?php echo json_encode($array);?>; //***注意不要用引號,如果用了json存儲的數組就成字符串了。另外如果有鍵名要以對象的形式彈出如readpoint.id
- alert(readpoint[0]);//fds
- </script>
- </head>
- </html>
通過JSON(測試成功) 因為JS能識別JSON格式的數據(php跟js的共同點所以這樣傳值才有效,那xml呢也許可以就算可以也會比較麻煩不提倡。用json就是為了方便否則直接用字符串傳也是一樣用JS把字符串在還原成數組。)
如果不用JSON的話,本人也嘗試過但沒有測試成功。彈出某個元素的時候會出現未定義的錯誤。(測試失敗)
當然我們也可以不用賦值直接在js里使用PHP數組(測試成功)。 ***注意前提是賦值數組不是某個變量***
-----------------------------------------------------
(參考) 如果出現一下問題的話 。本人通過上面方法就可以實現了
php 自身待了兩個和json 相關的函數
json_encode 和 json_decode
這兩個函數的具體用法 網上有很多相關的文章
本文主要介紹 用json_encode 時 中文無法轉換的解決方案
本文假設 文件所用的編碼為gb2312;
先寫出所需的數組
- <?php
- $json = array (
- 0 =>
- array (
- 'id' => '13',
- 'name' => '乒乓球',
- ),
- 1 =>
- array (
- 'id' => '17',
- 'name' => '籃球',
- )
- )
- ?>
如果直接用函數json_encode
- <?php
- echo json_encode($json);
- ?>
結果為:
- <?php
- [{"id":"13","name":null},{"id":"13","name":null}]
- ?>
可以看到漢字沒有被轉義 都為null
這是因為json僅僅轉義encoding編碼
故上面語句應該先轉換編碼
- <?php
- foreach ($ajax as $key=>$val)
- {
- $ajax[$key]['name'] = urlencode($val['name']);
- }
- echo json_encode($json);
- ?>
客戶端js代碼
- <script type="text/javascript">
- function getsort(obj)
- {
- $.ajax(
- {
- type : "GET",
- url : "<?=$this->baseUrl?>/index/getajax",
- data : "c=" obj.value,
- success : function(json)
- {
- var json=eval_r(json);
- var html = '<select>';
- $.each(json, function(k)
- {
- html = '<option value="' json[k]['id'] '">' decodeURI(json[k]['name']) '</option>';
- });
- html ="</select>";
- $('#sort').html(html);
- }
- }
- )
- }
- </script>
用上面的代碼js會報錯 說編碼不符合標准
原因是因為js 中decodeURI 僅僅支持utf8 轉碼
所以
php
代碼應該為下面的代碼
- <?php
- foreach ($ajax as $key=>$val)
- {
- $ajax[$key]['name'] = urlencode(iconv('gb2312','utf-8',$val['name']));
- }
- echo json_encode($json);
- ?>
-------------------------------------------------------------------
js讀取json數據
示例如下:
- <script type="text/javascript" language="javascript">
- var languages = {
- cn:{
- lang:'ch',
- name:"中文"
- },
- en:{
- lang:"英文",
- name:"en"
- }
- };
- document.write(languages.cn.name);
- </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結構的數據。
- <script>
- //直接聲明json數據結構
- var myJSONObject = {"bindings": [
- {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
- {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
- {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
- ]
- };
- alert(myJSONObject["bindings"][0].method);
- //這里讀取節點bindings中第一個數組位置method的值,也可以使用循環來讀取
- for(var key in myJSONObject){
- alert(myJSONObject[key][0].regex)
- }
- </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)
}