Zend Framework 2 通过 Ajax 请求访问服务
Zend Framework 2 Access Service via Ajax Request
对我之前的问题的补充
我现在正在努力通过 Ajax 请求从我的 View Helper 访问该服务。
我在 BookmarkAdvertService() 中添加了另一个方法来添加书签。
public function saveAdvertBookmark($advertId)
{
$bookmark = new Bookmark();
$userId = $this->getUserEntity()->getId();
$bookmark->setUserId($userId);
$bookmark->setAdvertId($advertId);
# write new bookmmark to database tbl bookmark
$this->getEntityManager()->persist($bookmark);
$this->getEntityManager()->flush();
}
在我的部分我添加了一个link
<?php if($bookmarkStatus==true){ ?>
Saved !
<a href="#" id="remove-bookmark">Remove Bookmark</a>
<?php }else{ ?>
<a href="#" id="add-bookmark">Add Bookmark</a>
<?php }?>
<script>
$("#add-bookmark").click (function () {
$.ajax({
dataType: 'json',
url: '/add-bookmark',
success: function(response) {
window.location.reload(true);
}
});
});
});
<script>
- 是否可以通过 Ajax 访问服务中的方法
要求?到目前为止,我一直只通过 Ajax 访问控制器
请求。
- 我想我必须通过 Ajax 交出 advertID 以及数据:{ id: advertId },这意味着我必须通过 jQuery 写入和读出 advertId 或者是还有其他方法可以在我的服务中获取它吗?
这可能是一个非常愚蠢的问题,但我在使用服务时仍然很挣扎。非常感谢您的帮助。
您应该在您的控制器中创建一个将使用该服务的操作,并将结果 return 返回给 jquery 脚本。在 zf2 中,请求被分派到匹配的控制器操作,一个真正原始的例子应该是这样的:
public function addBookmarkAction()
{
$id = $this->getEvent()->getRouteMatch()->getParam('id');
$this->getServiceLocator()->get("BookmarkAdvertService")->saveAdvertBookmark($id);
return $this->getResponse()->setStatusCode(200);
}
并且您应该将 id 添加到 url 的查询参数中(同时相应地更新路由器)。或者通过 POST 发送请求并在您的控制器中从那里检索。
对我之前的问题的补充
我在 BookmarkAdvertService() 中添加了另一个方法来添加书签。
public function saveAdvertBookmark($advertId)
{
$bookmark = new Bookmark();
$userId = $this->getUserEntity()->getId();
$bookmark->setUserId($userId);
$bookmark->setAdvertId($advertId);
# write new bookmmark to database tbl bookmark
$this->getEntityManager()->persist($bookmark);
$this->getEntityManager()->flush();
}
在我的部分我添加了一个link
<?php if($bookmarkStatus==true){ ?>
Saved !
<a href="#" id="remove-bookmark">Remove Bookmark</a>
<?php }else{ ?>
<a href="#" id="add-bookmark">Add Bookmark</a>
<?php }?>
<script>
$("#add-bookmark").click (function () {
$.ajax({
dataType: 'json',
url: '/add-bookmark',
success: function(response) {
window.location.reload(true);
}
});
});
});
<script>
- 是否可以通过 Ajax 访问服务中的方法 要求?到目前为止,我一直只通过 Ajax 访问控制器 请求。
- 我想我必须通过 Ajax 交出 advertID 以及数据:{ id: advertId },这意味着我必须通过 jQuery 写入和读出 advertId 或者是还有其他方法可以在我的服务中获取它吗?
这可能是一个非常愚蠢的问题,但我在使用服务时仍然很挣扎。非常感谢您的帮助。
您应该在您的控制器中创建一个将使用该服务的操作,并将结果 return 返回给 jquery 脚本。在 zf2 中,请求被分派到匹配的控制器操作,一个真正原始的例子应该是这样的:
public function addBookmarkAction()
{
$id = $this->getEvent()->getRouteMatch()->getParam('id');
$this->getServiceLocator()->get("BookmarkAdvertService")->saveAdvertBookmark($id);
return $this->getResponse()->setStatusCode(200);
}
并且您应该将 id 添加到 url 的查询参数中(同时相应地更新路由器)。或者通过 POST 发送请求并在您的控制器中从那里检索。