2011-12-14 18 views
0

私は、AJAX経由でPHPオブジェクトを渡すのが最善の方法であると思っていました。PHPオブジェクトをAJAX経由で渡す

//objectClass = objectClass.php 
$obj = new objectClass(); 
<a href="javascript:getOutput("some variable", $obj); 

例えば

他のファイルとして、すなわちoutput.php(getOutput()関数内でAJAXを介して呼び出さは)の$ OBJにアクセスするための最良の方法は何であるだけでなくobjectClass.phpにアクセスする必要がありますか?

私はjscon_encode($ obj)を試してからデコードしましたが、動作しませんでした。事前

+1

あなたは[PHP Object Serialization](http://php.net/manual/en/language.oop5.serialization.php)を試すことができます - オブジェクトを転送するために直列化し、受け取ったときにシリアル化します。 – rdlowrey

+1

JSONは道のりです。コードを表示する。 –

+2

シリアライズは簡単な選択肢ですが、シリアライズ解除は悪用可能性がないわけではありません。もう1つのオプションは、オブジェクトを '$ _SESSION'ストアに渡すことです。 – mario

答えて

2

おかげで正直なところ、それだけで@marioが提案のようにセッション変数に(この場合は対象に)渡される必要のある情報を保存するのが最も簡単になるだろう。動的に名前が付けられたセッション変数である必要がある場合は、AJAXを介してセッション変数の名前(文字列)を渡すだけです。

1

json_encodeが最適です。

あなたはJSONで '任意のエスケープするjson_encodeするhrefの引数に "の代わりに、とJSON_HEX_APOSオプションを追加' を使用する必要があります

このようにそれを使用します。

<?php 
    //objectClass = objectClass.php 
    $obj = new objectClass(); 
?>  
<a href='javascript:getOutput(<?php echo $some_variable ?>,<?php echo json_encode ($obj, JSON_HEX_APOS) ?>);'></a> 

または

<?php 
    //objectClass = objectClass.php 
    $obj = new objectClass();  
    echo "<a href='javascript:getOutput($some_variable, " . json_encode ($obj, JSON_HEX_APOS) . ");'></a>" 
?> 

EDIT: jQueryをお持ちの場合は、jQuery.parse()を使用してJSONを読み込むことをお勧めします。そうでない場合はJSON.parse()を使用できますが、それがarchaiと互換性があるかどうかはわかりませんcブラウザ。とにかくそれらなしでうまくいくはずです(サーバー側でXSSを確認してください)。

+0

repsonseありがとうございました - 私はJSONをデコードしたときに常に空でした:( – Stevanicus

+0

これは奇妙です。 –

関連する問題