热搜:NVER node 开发 php

php 返回数组给JS的问题

2024-09-05 19:15:01
php 返回数组给JS的问题

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

<?xml version="1.0" encoding="UTF-8"?>




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