php 返回數組給JS的問題

來源:互聯網
上載者:User
php端loadmenu.php
$page = $_POST ["page"];
$xml = simplexml_load_file('menu.xml');
$root=$xml->$page;
$arrJson=array();
$arrJson["key"]=$root->attributes()->key;// 擷取菜單的名稱KEY
echo json_encode($arrJson);
?>
JS端
function process_menu()
{
var url = "loadmenu.php" ;
var params = {'page':nowweb};
$.post(url,params,function(data){menu_back(data);});
}

function menu_back(response)
{
alert(response);


最後彈出的資訊是: {"key":{"0":"\u8868\u5355\u7ba1\u7406}}
為什麼不是 {"key":"菜單名"}?


回複討論(解決方案)

function process_menu()
{
var url = "loadmenu.php" ;
var params = {'page':nowweb};
$.post(url,params,function(data){menu_back(data);});
}
$.ajax({
type: "POST",
url: url,
data: params ,
dataType: jason,
success: function(response){
menu_back(response);
}
});
function menu_back(response)
{
alert(response);

function process_menu()
{
var url = "loadmenu.php" ;
var params = {'page':nowweb};
$.ajax({
type: "POST",
url: url,
data: params ,
dataType: jason,
success: function(response){
menu_back(response);
}
});
function menu_back(response)
{
alert(response);

function process_menu()
{
var url = "loadmenu.php" ;
var params = {'page':nowweb};
$.post(url,params,function(data){menu_back(data);});
}
$.ajax({
type: "POST",
url: url,
data: params ,
dataType: json,
success: function(response){
menu_back(response);
}
});
function menu_back(response)
{
alert(response);

function process_menu()
{
var url = "loadmenu.php" ;
var params = {'page':nowweb};
$.post(url,params,function(data){menu_back(data);});
}
$.ajax({
type: "POST",
url: url,
data: param……
也不對,彈出是 [object object]

dataType: jason,

dataType: json,

你的response是字串吧。。不是json對象

dataType: jason,

dataType: json,

你的response是字串吧。。不是json對象

php端loadmenu.php
$page = $_POST ["page"];
$xml = simplexml_load_file('menu.xml');
$root=$xml->$page;
$arrJson=array();
$arrJson["key"]=$root->attributes()->key;// 擷取菜單的名稱KEY
echo json_encode($arrJson);
?>
這樣有問題嗎?

我比較奇怪的是:
1、$root->attributes()->key 不會報錯嗎?
2、彈出的資訊是: {"key":{ "0":"\u8868\u5355\u7ba1\u7406}}
這個 0 是從哪裡來的?

你最好貼出 menu.xml 的片段,測試一下

引用 5 樓 ohmygirl 的回複:dataType: jason,

dataType: json,

你的response是字串吧。。不是json對象

php端loadmenu.php
$page = $_POST ["page"];
$xml = simplexml_load_file('menu.xml');
$root……


header("content-type:application/json;charset=.............");

var params = {'page':nowweb}; //這個 nowweb 定義了嗎,如果沒有,要用引號括起來
先檢測php那邊返回資料是否正常

我比較奇怪的是:
1、$root->attributes()->key 不會報錯嗎?
2、彈出的資訊是: {"key":{"0":"\u8868\u5355\u7ba1\u7406}}
這個 0 是從哪裡來的?

你最好貼出 menu.xml 的片段,測試一下





各位,這個問題是不是中文亂碼的問題?

var params = {'page':nowweb}; //這個 nowweb 定義了嗎,如果沒有,要用引號括起來
先檢測php那邊返回資料是否正常
PHP那邊沒有問題

各位,這個問題是不是中文亂碼的問題?

不是亂碼。不過是json格式下的中文的utf-8編碼。

urldecode可以看到正常輸出的中文。不過這是沒有必要的。因為js中處理json也是按照utf-8的格式處理的

這樣寫

$page = $_POST ["page"];$xml = simplexml_load_file('menu.xml'); if($root = $xml->$page) { //可能傳過來的參數是無效的  $arrJson = array();  $arrJson["key"] = current($root->attributes()->key);// 擷取菜單的名稱KEY  echo json_encode($arrJson);}
function process_menu(nowweb) {  var url = "loadmenu.php" ;  var params = {'page':nowweb};  $.post(url,params,function(data){    menu_back(data);  }, 'json');}function menu_back(response) {  alert(response.key);}process_menu('form'); //測試一下

你先直接存取php看輸出有沒有問題,如果有問題,就是php那邊的問題

function menu_back(response)
{
response = eval('('+response+')')
alert(response);

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.