Home >Backend Development >PHP Tutorial >php 返回数组给JS的问题

php 返回数组给JS的问题

WBOY
WBOYOriginal
2016-06-23 14:03:00982browse

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 的片段,测试一下






member

jbxx

人口基本信息
member


人口户籍信息
housereg




djxx

党员基础信息
partymember


党员奖惩信息
pmreandpu


党费缴纳管理
pmdues


党费活动管理
dymeetinginfo


工会活动管理
unionmeeting






qygl

csxx




fwgl

csxx





各位,这个问题是不是中文乱码的问题?

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);

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn