繁体   English   中英

将PHP对象作为javascript函数的参数传递

[英]Passing a PHP Object as argument of a javascript function

我的搜索技巧似乎使我失败了。 我有一个从mysql条目反序列化的php对象,我想将其作为参数传递给javascript函数,因此它可以将对象与表单中的值进行比较。 根据我从搜索中收集到的信息,将对象编码为json对象可以解决问题,但是当我在变量上执行json_encode时,只会导致{}

以下是相关的代码段:

<?php
$data = new Data();
$data = unserialize(base64_decode($rawdata));//Where $rawdata is the data retrieved from the mysql query.
/* using function such as $data->getName() to retrieve the relevant data */
?>

<form id="myform" action="#" method="post" onsubmit="compareEntry(<?=json_encode($data)?>)">

<!-- Different input and select field initialized with the php data -->

<input type="submit" onclick="compareEntry(<?=json_encode($data)?>)"/>
</form>
<!--<?=json_encode($data)?>--> 

我知道从数据库中正确检索了php数据,因为表单中的值都已正确初始化。 只有最后一个html注释,我才知道我有一个空的json对象。

这是print_r($data)返回(已编辑敏感信息)的示例:

(
    [m_path:private] => 
    [m_version:private] => REL_54
    [m_bugs:private] => Array
 *RECURSION*
    [m_targets:private] => Array
 *RECURSION*
    [m_symptoms:private] => Array
 *RECURSION*
    [m_exception:private] => Array
 *RECURSION*
    [m_instruction:private] => Array
 *RECURSION*
    [m_sources:private] => Array
 *RECURSION*
    [m_risks:private] => Array
 *RECURSION*
    [m_test:private] => Array
 *RECURSION*
    [m_contact:private] => Array
 *RECURSION*
)
1

我做错什么了吗? 在我的场景中,将JSON编码正确吗?

JSON是正确的方法。 在这种情况下,基本上json_encode / json_decode可以很好地工作。 如果它返回一个空对象,则可能是您尝试编码的数据有问题。 该函数希望数据使用UTF-8,而PHP本身仍为ISO-8859-1。 因此,如果您在某些字段中有特殊字符,则最好先使用utf8_encode转换这些字符。

您的对象仅包含json_encode不会输出的私有属性。

同样,似乎正在进行某种递归,这可能意味着每个数组的成员都在引用对象本身(或类似的东西)。

您将需要公开某些属性,并可能还解决递归问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM