ホームページ > バックエンド開発 > PHPチュートリアル > PHPが配列をJSに返す際の問題

PHPが配列をJSに返す際の問題

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-23 14:03:00
オリジナル
1019 人が閲覧しました

PHP 側のloadmenu.php
$page = $_POST ["page"];
$root=$xml->$page; =array();
$arrJson["key"]=$root->attributes()->key;// メニュー KEY の名前を取得します
echo json_encode($arrJson);
JSサイド
関数 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":"u8868u5355u7ba1u7406}}
なぜ {" 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:ジェイソン、
成功: function(response){
menu_back(response);

アラート(response)
関数 process_menu()
{
変数 URL = "loadmenu.php" ;
var params = {'page':nowweb};
$.ajax({
type: "POST",
url: url,
data: params,

dataType:

成功:関数(応答) {
関数 menu_back(応答)
{

関数 process_menu()
{ var url = "loadmenu.php" ;
var params = {'ページ':nowweb};
$.post(url,params,function(data){menu_back(data);});
}
$.ajax({
タイプ: "POST",
url: url ,
データ: params ,
dataType: json,
success: function(response){
menu_back(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,

you応答は文字列です。 。 json オブジェクトではありません

dataType: jason,

dataType: json,

応答は文字列です。 。 JSON オブジェクトではありません


PHP 側のloadmenu.php
$page = $_POST ["page"];
$root=$xml->$ページ ;
$arrJson=array();
$arrJson["key"]=$root->attributes()->key;// メニュー KEY の名前を取得します

これは問題ですか?

私が奇妙だと思うのは:

1. $root->attributes()->key はエラーを報告しないのでしょうか?

2. ポップアップ メッセージは次のとおりです: {"key":{ "0":"u8868u5355u7ba1u7406}}
この 0 はどこから来たのですか?

menu.xml のフラグメントを投稿してテストした方がよいでしょう

5 階の ohmygirl からの返信を引用します: dataType: jason,

dataType: json,

あなたの応答は文字列です。 。 json オブジェクトではありません

PHPloadmenu.php
$page = $_POST ["page"];
$root...

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

var params = {'page':nowweb} // 定義されていない場合は、引用符で囲む必要があります

まず、php から返されたデータが正常かどうかを確認してください


私が不思議に思うのは:

1. $root->attributes()->key はエラーを報告しませんか?

2. ポップアップ メッセージは次のとおりです: {"key":{"0":"u8868u5355u7ba1u7406}}
この 0 はどこから来たのですか?

menu.xml のフラグメントを投稿してテストした方がよいでしょう

< ?xml バージョン = "1.0" エンコーディング = "UTF-8"?>

メンバ jbxx ; name>基本的な人口情報<-- 第 3 レベルのメニュー名 -->
member menu3> テーブル名 -->

djxx パーティメンバーの基本情報
partymember ;/menu3>

パーティーメンバーの報酬と罰の情報
pmreandpu !-- 対応するテーブル名-->


/name> pmdues

党費活動管理 dymeetinginfo
;/name>< ;!-- 第 3 レベルのメニュー名 -->
unionmeeting
menu2>


メニュー名-- >
;




皆さん、この問題は中国語の文字化けが原因でしょうか?

var params = {'page':nowweb}; // これは nowweb が定義されていますか? 定義されていない場合は、まず 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の問題です。

関数 menu_back(応答)
{
応答 = eval('('+応答+')')
アラート(応答);

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート