将PHP Class对象传递给Javascript并在Javascript函数中访问其属性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了将PHP Class对象传递给Javascript并在Javascript函数中访问其属性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3487字,纯文字阅读大概需要5分钟。
内容图文
我在访问我创建的Javascript函数中的对象属性时遇到问题.该对象最初是一个PHP对象,我使用json_encode()编码为JSON
我有1个PHP文件和1个外部JS文件.
在我的PHP文件中,我有ff:
<?php
$announcementDaoImpl = new AnnouncementDaoImpl($pdo);
$announcementList = $announcementDaoImpl->getAllAnnouncementByMostRecent();
foreach($announcementList as $key => $value): ?>
<tr>
<td><?php echo $value->getId(); ?></td>
<td><?php echo $value->getTitle(); ?></td>
<td><?php echo $value->getDateAdded(); ?></td>
<?php echo json_encode($value); ?>
<td>
<a href="#" onclick="showEditModal('modalBox',<?php echo json_encode($value); ?>)">Edit</a>
</td>
</tr>
<?php endforeach; ?>
我可以通过使用< td>上的get()方法来获取和显示值.但是,当我通过json_encode($value)将其编码为JSON时,我什么都没得到.
线
<?php echo json_encode($value); ?>
回声{} {} {} {} {} {} {} {} {} {} {} {} {}这似乎是空对象.
我的目标是能够将$value php对象传递给javascript方法showEditModal(),然后访问方法块中的对象属性.像object.propertyname这样的东西
下面是javascript方法showEditModal()实现.
function showEditModal(modalDivId,object){
alert(object.title); //returns undefined
var modalBox = document.getElementById(modalDivId);
var modalContentValues = document.getElementById("modalContentValues");
modalBox.style.display = "block";
var node = document.createElement("p");
var text = document.createTextNode(object); //shows [object Object]
node.style.display = "inline";
node.appendChild(text);
modalContentValues.appendChild(node);
}
—编辑—
这是类定义.
class Announcement {
private $id;
private $title;
private $content;
private $dateAdded;
public function getContent()
{
return $this->content;
}
public function setContent($content)
{
$this->content = $content;
}
public function getDateAdded()
{
return $this->dateAdded;
}
public function setDateAdded($dateAdded)
{
$this->dateAdded = $dateAdded;
}
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
}
public function getTitle()
{
return $this->title;
}
public function setTitle($title)
{
$this->title = $title;
}
}
– 编辑结束 –
这是我的浏览器上显示的内容.
我已经在javascript方法中添加了一些注释以获取更多详细信息.
我很感激任何帮助.
谢谢.
解决方法:
您可以实现JsonSerializable接口来定义在序列化对象时要显示的属性;例如:
<?php
class User implements \JsonSerializable
{
private $name;
public function __construct(string $name)
{
$this->name = $name;
}
public function jsonSerialize()
{
return [
'name' => $this->name,
];
}
}
echo json_encode(new User('Bob')); // {"name":"Bob"}
这是以透明和隐式方式处理PHP中的对象序列化的惯用方法,它允许您为对象的json表示定义首选形状/格式,并将其封装在其类定义中.
在序列化嵌套对象结构时非常方便,例如,当您使用值对象时 – 这是一个(人为的)示例:
class Latitude implements \JsonSerializable
{
private $degree;
public function __construct(float $degree)
{
// validation etc.
$this->degree = $degree;
}
public function jsonSerialize(): float
{
return $this->degree;
}
}
class Longitude implements \JsonSerializable
{
private $degree;
public function __construct(float $degree)
{
// validation etc.
$this->degree = $degree;
}
public function jsonSerialize(): float
{
return $this->degree;
}
}
class Coordinate implements \JsonSerializable
{
public function __construct(Latitude $latitude, Longitude $longitude)
{
$this->latitude = $latitude;
$this->longitude = $longitude;
}
public function jsonSerialize(): array
{
return [
'latlng' => [$this->latitude, $this->longitude],
];
}
}
$coordinate = new Coordinate(new Latitude(0), new Longitude(0));
echo json_encode($coordinate); // {"latlng":[0,0]}
示例:https://repl.it/repls/RelievedLightcyanFolders
内容总结
以上是互联网集市为您收集整理的将PHP Class对象传递给Javascript并在Javascript函数中访问其属性全部内容,希望文章能够帮你解决将PHP Class对象传递给Javascript并在Javascript函数中访问其属性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。