通过AJAX传递PHP对象

时间:2011-12-14 19:02:16

标签: php ajax object

我想知道通过AJAX传递php对象的最佳方法是什么。

例如

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

由于另一个文件,即output.php(通过getOutput()函数中的ajax调用)也需要访问objectClass.php,访问$ obj的最佳方法是什么?

我尝试了jscon_encode($ obj)然后解码但没有工作。

提前致谢

2 个答案:

答案 0 :(得分:2)

老实说,在@mario建议的会话变量中存储需要传递的信息(在这种情况下是一个对象)是最容易的。如果你需要它是一个动态命名的会话变量,你可以通过AJAX传递会话变量的名称(字符串)。

答案 1 :(得分:1)

json_encode是最好的方式。

您需要对href参数使用'而不是',并将jSON_HEX_APOS选项添加到json_encode以转义任何'在JSON中。

像这样使用:

<?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>"
?>

编辑: 如果你有jQuery,我建议使用jQuery.parse()来加载JSON。如果没有,你可以使用JSON.parse(),但我不知道它是否与古老的浏览器兼容。无论如何,没有它们你应该没问题(只需在服务器端检查XSS)。