2010-11-23 3 views
2

グローバル変数を使用しています。私が作業しているプロジェクトに多数の情報を格納しています。それは様々な価値を持つオブジェクトであり、私はそれに他のオブジェクトがあると思います。たとえば...

プログラムが実行されているので、実際にはallProjs内に配列を追加しています。私は、プロジェクトの名前として配列インデックスを使用したい、そしてそれは情報の束を含んでいます。ここでは、プログラムを数分間実行した後のオブジェクトのサンプルを示します。

(Chromeのコンソールからコピー)

$.myVar 
    Object 
    currentProj: "McB2" 
    toggleVar: 0 
    allProjs: Array[0] 
     McB1: Array[0] 
      length: 0 
      __proto__: Array[0] 
     McB2: Array[4] 
      0: "02070124" 
      1: "02030036" 
      2: "02090313" 
      3: "02090450" 
      length: 4 

今、私はので、私はJSONに変換し、サーバー上に保存することができます$ .postを使用してPHPファイルにこのデータを渡したいです。

私はちょうど実行することにより、基本的に次の操作を行います。

$.post('saveJSON.php', $.myVar, function(data) { 
    $('#dumpspace').html(data); 
}); 

私はちょうど出力するPHPファイル持っているデバッグのために:

print_r($_REQUEST); 

は、今私は私ができる多次元配列を期待しますJSONに変換して保存しますが、吐き出すのは次のとおりです:

Array ([currentProj] => McB2 [toggelVar] => 0) 

オブジェクトのallProjセクションを送信しませんが、私はなぜそうは思わないのですか?コンソール上のオブジェクトを見ると表示されるように見えるので、私は何が欠けているのか分かりません。

何か助けていただければ幸いです。

ありがとうございます!

明確化

最初のセクション、私はallProjsを宣言するところ、それは私が何か間違ったことをやっている可能ですか?私は文字列化を実行すると、私は同様に間違った結果に終わる:

JSON.stringify($.myVar) 
"{"currentProj":"McB2","allProjs":[],"toggleVar":0}" 

答えて

2

あなたはJSON文字列にオブジェクト/配列を.stringifyする必要があります。すべての「現代の」ブラウザは、ネイティブにJSON.stringify(obj)でこれをサポートしています。 「古い」ブラウザのバージョンもサポートする必要がある場合は、http://www.json.orgにアクセスし、同じ機能を提供するjson2.js libをダウンロードする必要があります。

逆に、サーバーからJSON化された文字列を受け取る場合は、$.post()コールに 'json'を渡してjson文字列が必要であることをjQueryに伝えるか、 JSONオブジェクトに再度アクセスして、受信したデータを自分自身に送信します。 JSON.parse(json_string)は、渡されたJSON文字列からJavascriptオブジェクトを返します。

+0

お寄せいただきありがとうございます。私はそれを実行しようとしたが、オブジェクトのallProj部分で行方不明になってしまう。それは私がallProj配列を前もって宣言している方法と関係がありますか?上記の投稿を更新して、もともと私のグローバル変数をどのように宣言しているのかを含めました。私はこれが私が何か間違っていたところかもしれないと思う? – McB

0

PHPに投稿する前に、配列をJSON形式に変換する必要があります。このトリックの弟を行い

var jsonOb = JSON.stringify(yourArray); 

$.post(
"yourPage.php", 
{jsonOb:jsonOb}, 
function(r){ 
//your success response 
} 
); 

希望:

この

は、私が過去に使用している方法です!

w.

+0

提案していただきありがとうございます! Stringifyは期待される結果も出力していないようです。興味深いことに、Key Valueペアの名前を付けると、親配列の長さは常に0と表示されます。なぜこれが起こるのでしょうか? – McB

1

私の問題を解明しました。私がオブジェクトを宣言していたとき、私は[]を入れてallProjとArrayを作っていました。私がallProj:{}と入れておけば、それは完璧に動作します!提案のおかげで、私の間違いを絞り込むのに役立ちました。

-M

関連する問題