ホームページ  >  記事  >  バックエンド開発  >  js ajax postのオブジェクトはphpに送信されると直接配列になりますか?

js ajax postのオブジェクトはphpに送信されると直接配列になりますか?

WBOY
WBOYオリジナル
2016-06-23 14:22:481264ブラウズ

この投稿は zhoumengkang によって最終編集されました: 2013-09-12 10:03:14

jquery のコード
var str ="{'a':'b','aa':'bb'}";var str2 = eval('('+str+')');var type = typeof(str2);console.log(str);console.log(type);//objectconsole.log(str2);$.post('./bb.php',{'data':str2});

bb.php は事前に導入されました
$data = $_POST['data'];var_dump($data);

返された結果はコンソールに表示され、次のように直接出力されます配列
array(2) {  ["a"]=>  string(1) "b"  ["aa"]=>  string(2) "bb"}

通常、php 側で json_decode() 処理が必要です。この方法では、json 形式を解析する必要がなく、配列を直接取得します。

js のオブジェクトが php の連想配列に似ていることは以前から知っていましたが、これがどのように機能するのか理解できません (ajax が php にポストされるときに、js のオブジェクトが直接配列に変換されるのでしょうか?)。

ディスカッションへの返信 (解決策)

var str2 = eval('('+str+')');

var str2 = eval('('+str+')');
これは文字列をオブジェクトに変換する方法です。何が問題ですか?

jquery は、ajax 操作中に json オブジェクトを URL パラメーター文字列の形式に変換します
したがって、php で通常の方法でそれを受け入れることができます

jq はシリアル化関数 htmlSerialize、Serialize を提供します

jquery は、json オブジェクトを URL パラメーターに変換しますAjax操作中に文字列をURLパラメータ文字列の形式に変換します
したがって、phpで通常の方法で受け入れることができます

jqはシリアライズ関数htmlSerialize、Serializeを提供します。つまり、jsオブジェクトをphpに直接転送して、それを直接配列しますか?それは通常の使用です。なぜデータ型が変換されるのですか?

は $.post の実行時に Serialize メソッドを使用して {'data':{'a':'b','aa':'bb'}}
を data[a]=b&data[aa]= に変換しますbb php に送信
php が data[a]=b&data[aa]=bb を受け取った後、parse_str 関数を呼び出し、それを

array (  'data' =>   array (    'a' => 'b',    'aa' => 'bb',  ),)
に変換し、$_POST 配列に代入します

var str2 = eval('('+ str+')' ); この文は確かに json を js オブジェクトに直接変換します。
ただし、$.post はオブジェクトを php に送信できると確信していますか?配列を送信する場合でも、配列をパラメータに分割して 1 つずつ送信します。
彼はまずオブジェクトを配列に変換し、次にその配列を 1 つずつパラメータに変換し、次にパラメータを 1 つずつ PHP 側の配列にマージします。実際、これはよく目にする get メソッドのパラメータ文字列と似ていますが、get がオブジェクトも取得できるとは聞いたことがありません。

あくまで推測ですので、お気軽にコメントください。

var str2 = eval('('+str+')'); この文は確かに json を js オブジェクトに直接変換します。
ただし、$.post はオブジェクトを php に送信できると確信していますか?配列を送信する場合でも、配列をパラメータに分割して 1 つずつ送信します。
彼はまずオブジェクトを配列に変換し、次にその配列を 1 つずつパラメーターに変換し、そのパラメーターを 1 つずつ PHP 側の配列にマージします。実際、これはよく目にする get メソッドのパラメータ文字列と似ていますが、get がオブジェクトも取得できるとは聞いたことがありません。

あくまで推測ですので、お気軽にコメントください。 よく言われて、たくさん得をしました。特に「エンゲージ」という言葉の使い方がとても上手ですね!

は $.post の実行時に Serialize メソッドを使用して {'data':{'a':'b','aa':'bb'}}
を data[a]=b&data[aa]= に変換しますbb php に送信
php は data[a]=b&data[aa]=bb を受信した後、parse_str 関数を呼び出し、それを

array (  'data' =>   array (    'a' => 'b',    'aa' => 'bb',  ),)
に変換し、$_POST 配列に割り当てます。

よく言われて、たくさん得しました。特に「エンゲージ」という言葉の使い方がとても上手ですね!
ははは。普遍的な動詞。自分を家を建てるためにセメントを運ぶ人だと考えると、口から「do」という言葉が出てきます。 。 。


よく言われて、たくさん得しました。特に「エンゲージ」という言葉の使い方がとても上手ですね!
ははは。普遍的な動詞。自分を家を建てるためにセメントを運ぶ人だと考えると、口から「do」という言葉が出てきます。 。 。 労働をしてください!

var str2 = eval('('+str+')'); この文は確かに json を js オブジェクトに直接変換します。
ただし、$.post はオブジェクトを php に送信できると確信していますか?配列を送信する場合でも、配列をパラメータに分割して 1 つずつ送信します。
彼はまずオブジェクトを配列に変換し、次にその配列を 1 つずつパラメーターに変換し、そのパラメーターを 1 つずつ PHP 側の配列にマージします。実際、これはよく目にする get メソッドのパラメータ文字列と似ていますが、get がオブジェクトも取得できるとは聞いたことがありません。

あくまで推測ですので、お気軽にコメントください。 まだご覧いただけるかわかりませんが、今日マニュアルのこの一節を見た方が理解しやすかったです:
http://www.php.net/manual/zh/reserved.variables.httprawpostdata.php

post 渡される値は $HTTP_RAW_POST_DATA である必要があります
そして、使用する $_POST はこれに基づいてフォーマットされたデータです


var str2 = eval('('+str+')'); この文は確かに json を js オブジェクトに直接変換します。
ただし、$.post はオブジェクトを php に送信できると確信していますか?配列を送信する場合でも、配列をパラメータに分割して 1 つずつ送信します。
彼はまずオブジェクトを配列に変換し、次にその配列を 1 つずつパラメーターに変換し、そのパラメーターを 1 つずつ PHP 側の配列にマージします。実際、これはよく目にする get メソッドのパラメータ文字列と似ていますが、get がオブジェクトも取得できるとは聞いたことがありません。

あくまで推測ですので、お気軽にコメントください。 まだご覧いただけるかわかりませんが、今日マニュアルのこの一節を見た方が理解しやすかったです:
http://www.php.net/manual/zh/reserved.variables.httprawpostdata.php

post 渡される値は $HTTP_RAW_POST_DATA である必要があります
そして、私たちが使用する $_POST は、これに基づいてフォーマットされたデータです

ありがとうございます、私も調べてみます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。