検索
ホームページバックエンド開発PHPチュートリアルjson_PHP チュートリアルを介して php と js が相互にデータを転送する方法についてのディスカッション

json_PHP チュートリアルを介して php と js が相互にデータを転送する方法についてのディスカッション

Jul 21, 2016 pm 03:13 PM
javascripjsonphp移行そして存在するどうやって私たち話し合うデータ関連している組み合わせる合格質問

php と javascript を組み合わせて特定の機能を実装する場合、json がよく使用されます。 json は js のデータ形式であり、js で直接解析できます。 PHP は json データを直接読み取ることはできませんが、PHP は、PHP スクリプトからアクセスできるように json データを変換する json_decode 関数を提供します。同時に、PHP はデータを json 形式に変換する json_encode 関数も提供します。では、js のネイティブ json は、php の json_encode 関数によって変換された json とまったく同じですか?今日はウェブマスターがこの問題について皆さんと話し合います。

PHP を通じて配列データを JavaScript に渡す場合、通常はそれを JSON 形式に変換し、JavaScript を使用して取得する必要があります。次に、配列を例として、最初に 2 つの違いを見ていきます。

1. 1次元配列

コードをコピーします コードは次のとおりです:
$array=array("1","2","3");
json_encode 関数を使用して変換します 最後に、対応する json 文字列は


コードをコピーします
コードは次のとおりです: ["1","2","3"]。

注意深い友人は、変換後に取得されたjson文字列がJavaScriptの配列の形式であることにすぐに気づきました。それでは、jsの配列アクセスメソッドを使用してアクセスできますか?
もちろん可能ですが、この json 文字列を js に渡すときは、次のように urlencode 関数を使用してエンコードする必要があります:



コードをコピーします
コードは次のとおりです: にアクセスします

次の js コードを使用して確認できます:


コードをコピー
コードは次のとおりです: function show(str){
var jobj=eval_r(decodeURI) (str));
alert(jobj[2 ]);
}


実際に試してみると、js の 1 次元配列と同じようにアクセスできることがわかります。 eval メソッドは、渡されるのが文字列であるため、json 文字列を json オブジェクトとして解釈します。文字列の 3 番目の文字の値が取得されます。
この 1 次元配列にいくつかの変更を加えてみましょう。上記の 1 次元配列にはインデックスが指定されていないため、デフォルトで数値インデックスが設定されています。
php 配列を考えてみましょう。



コードをコピーします
コードは次のとおりです: $array=array('a'=>'1','b'=>'2','c'=>'3 ');

json_encode 関数を使用 変換後、対応する json 文字列は


コードをコピー
コードは次のとおりです: {"a":"1","b":"2" ,"c":"3"}


最も明らかな違いは、文字列の両端の [] が {} になったことです。では、この文字列は上記のように処理された後、js からアクセスできるでしょうか。試してみましょう:



コードをコピーします
コードは次のとおりです: json
関数にアクセスshow(str ){
var jobj=eval_r(decodeURI(str));
alert(jobj.a)
}


試してみると、リンクをクリックしてもポップアップ ウィンドウが表示されないことがわかります。 。なぜ? PHPで生成されたjson文字列の形式が間違っているのでしょうか?いえ、これは eval 関数を使って説明したところ、エラーが発生しました。上記の関数コードを次のように置き換えます:


コードをコピー
コードは次のとおりです: function show(str){
var jobj=eval_r('('+decodeURI(str)+')');
アラート (jobj.a);
}


もう一度試してください!今からでも訪問してみてはいかがでしょうか?これは、 eval メソッドを使用してキー名を含む json 文字列を処理する場合、文字列の両端の大括弧を高速化する必要があることを示しています。その理由については、ウェブマスターにはわかりません。彼はただ巨人の肩の上に立っているだけです。
ここで、PHP によって生成された json 文字列
{"a":"1","b":"2","c":"3"} は、渡された後に直接 json 形式に解釈できないことに注意してください。 js に変換しますが、この文字列を使用して js 内に直接 json データを作成する場合は問題ありません。次のコードを試してください:



コードをコピーします
コードは次のとおりです:

var jobj={"a":"1","b":"2","c":"3"};

2 の 2 次元配列。 -次元配列は PHP で広く使用されているため、2 次元配列から変換された json 形式を理解することが非常に重要です。上記の例を前置きとして、ウェブマスターは以下のサンプル コードを直接提供します:


コードをコピーします コードは次のとおりです:
アクセス json
function show(str ){
var jobj=eval_r(decodeURI(str));
alert(jobj[0][0])
}


実行すると、これが 1 次元配列に似ていることがわかります。これはキー名を付けない例なので、show関数で文字列の両端の括弧を削除することも可能です。
次に、2 次元配列にいくつかの変更を加え、2 次元にキー名を追加します。サンプル コードを参照してください:


コードをコピーします コードは次のとおりです:
'1',"b"=>'2','3')));?> ;')" id= "aj">json にアクセス
function show(str){
var jobj=eval_r('('+decodeURI(str)+')');
alert(jobj[0 ].a);
}


全員がコードを実行した後、ここでの json データへのアクセス方法が少し異なることがわかりました。上では
alert(jobj[0][0]); を使用しましたが、ここでは
alert(jobj[0].a); を使用しました。理由は聞かないでください。これがjsonへのアクセス方法です。
上記の例では、2 次元配列の 2 次元にキー名を追加しました。次に、アクセス方法の違いを確認するために 1 次元にキー名を追加します。



コードをコピーします。
コードは次のとおりです。 json にアクセス function show(str){
var jobj=eval_r('('+decodeURI(str)+')' );
alert(jobj.k [1]);
}


ここでは、配列が変換されるときに、配列にキー名が含まれている限り、メソッドを使用します。 json 形式に変換すると、
json object.key name
を使用してキーの下の要素にアクセスします。上記の例では、キー k の下の配列要素は数値インデックスなので、json でアクセスするには k[1] を使用します。
次に、配列の 1 番目と 2 番目の次元の両方にキー名を追加します。



コードをコピーします

コードは次のとおりです:
'1','2','3')));?>')" id="aj"> ;json にアクセス 関数 show(str){ var jobj=eval_r('('+decodeURI(str)+')');
上で述べたように、キー名が含まれている限り、
json object.key name
の形式でアクセスする必要があります。複数のキーがある場合は、
json object.key name.key name... を使用します。 , 理由は聞かないでください。これが json へのアクセス方法です。なぜこれを規定しているのかを説明できるのは JavaScript の発明者だけです。
結論:
1. phpの配列をjson文字列に変換してjsに渡す場合。配列にキー名が指定されていない場合は、js の eval メソッドを直接使用して、js 処理用の json 形式に変換できます。配列にキー名が含まれている場合は、eval メソッドを使用してそれを処理する必要があります。
()
を使用して、JSON 文字列を括弧で囲まれた文字列に変換します。
2. 配列にキー名が含まれている場合は、json 文字列に変換した後、
json object.key name.key name... を使用して js でアクセスします。数値インデックスの場合は、
json オブジェクトを使用します。 [ 1]
または
json object.key name[1]
この方法。
上記では、PHP が json 文字列を js に渡すときに注意する必要があることを主に説明しました。次に、js を使用して JSON 文字列を php に渡すときにそれを処理する方法について説明します。
賢明な方であれば、json データが引用符で囲まれ、文字列として PHP に渡される限り (通常は ajax を使用します)、json_decode 関数を使用してデコードできることをすでにご存知のはずです。それは正しい!それでおしまい!ただし、JSON 文字列を構築することがあまりない場合は、
echo json_encode(array('k'=>array("a"=>'1',') を使用することも考えられます。 2 ','3')))
このようにして、構築する必要があるターゲット文字列の json 形式を表示します。このようにして、必要な結果に従って js で構築できます。
さて、今日は JSON データを使用して php と js の間で通信する方法について説明しました。json エンコード後に php のオブジェクト型を js に渡すことができます。

http://www.bkjia.com/PHPjc/326577.html

tru​​ehttp://www.bkjia.com/PHPjc/326577.html技術記事 php と javascript を組み合わせて特定の機能を実装する場合、json がよく使用されます。 json は js のデータ形式であり、js で直接解析できます。そして、phpはjsonデータを直接読み取ることはできませんが...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPの継続的な使用:その持久力の理由PHPの継続的な使用:その持久力の理由Apr 19, 2025 am 12:23 AM

まだ人気があるのは、使いやすさ、柔軟性、強力なエコシステムです。 1)使いやすさとシンプルな構文により、初心者にとって最初の選択肢になります。 2)Web開発、HTTP要求とデータベースとの優れた相互作用と密接に統合されています。 3)巨大なエコシステムは、豊富なツールとライブラリを提供します。 4)アクティブなコミュニティとオープンソースの性質は、それらを新しいニーズとテクノロジーの傾向に適応させます。

PHPおよびPython:類似点と相違点を調査しますPHPおよびPython:類似点と相違点を調査しますApr 19, 2025 am 12:21 AM

PHPとPythonはどちらも、Web開発、データ処理、自動化タスクで広く使用されている高レベルのプログラミング言語です。 1.PHPは、ダイナミックウェブサイトとコンテンツ管理システムの構築によく使用されますが、PythonはWebフレームワークとデータサイエンスの構築に使用されることがよくあります。 2.PHPはエコーを使用してコンテンツを出力し、Pythonは印刷を使用します。 3.両方ともオブジェクト指向プログラミングをサポートしますが、構文とキーワードは異なります。 4。PHPは弱いタイプの変換をサポートしますが、Pythonはより厳しくなります。 5. PHPパフォーマンスの最適化には、Opcacheおよび非同期プログラミングの使用が含まれますが、PythonはCprofileおよび非同期プログラミングを使用します。

PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境