【发布时间】:2020-04-12 03:11:55
【问题描述】:
我在产品列表页面上有以下生成的 href 链接
<a title="Add to My Favourites" class="a2f-link" href="http://epicurium.localhost/by-lifestyle-diet/breakfast?sort=20a&products_id=1838&action=add_to_favourites">
<img src="images/icons/favourites.png" alt="Add to My Favourites" title=" Add to My Favourites " width="16" height="16" class="fl_add" />
</a>
生成这个href链接的php是
public function add_to_favourites_link($products_id, $product_value)
{
if (!isset($this->icon)) {
$this->icon = (FAVOURITES_LISTING_ICON == 'Font Awesome') ? FA_ADD_TO_FAVOURITES : zen_image(DIR_WS_IMAGES . 'icons/' . BUTTON_ADD_TO_FAVOURITES, BUTTON_ADD_TO_FAVOURITES_ALT, '', '','class="fl_add"');
}
$page_link = zen_href_link($GLOBALS['current_page_base'], zen_get_all_get_params(array('products_id', 'action')) . 'products_id=' . (int)$products_id . '&action=add_to_favourites');
return ($this->favouritesEnabled) ? sprintf('<span class="a2f-wrap"><a title="%4$s" class="a2f-link" href="%2$s">%3$s</a><span class="a2f-value">%1$s</span></span>', $product_value, $page_link, $this->icon, BUTTON_ADD_TO_FAVOURITES_ALT) : '';
}
在另一个文件中
case 'add_to_favourites':
if (isset($_GET['products_id'])) {
if (zen_has_product_attributes($_GET['products_id'])) {
$messageStack->add_session('product_info', sprintf(CAUTION_PRODUCT_HAS_ATTRIBUTES, zen_get_products_name($_GET['products_id'])), 'caution');
zen_redirect(zen_href_link(zen_get_info_page($_GET['products_id']), zen_get_all_get_params(array('action'))));
} else {
if (!(isset($_SESSION['customer_id']) && zen_not_null($_SESSION['customer_id']))) {
$messageStack->add_session('login', CAUTION_LOGIN_REQUIRED_FOR_FAVOURITES, 'caution');
$_SESSION['navigation']->set_snapshot();
zen_redirect(zen_href_link(FILENAME_LOGIN, '', 'SSL'));
}
$favourites = new favourites();
$favourites->addToFavourites($_GET['products_id'], (FAVOURITES_SHOW_ON_ADD == 'true') ? 'favourites' : 'header');
if (FAVOURITES_SHOW_ON_ADD == 'true') {
zen_redirect(zen_href_link(FILENAME_FAVOURITES, '', 'SSL'));
} else {
zen_redirect(zen_href_link($current_page_base, zen_get_all_get_params(array('action', 'products_id'))));
}
}
}
break;
我想将其更改为通过 AJAX 工作,因此我没有重新加载页面,但老实说,我不知道从哪里开始将 href 链接修改为 AJAX 调用。 我曾经尝试过的唯一 AJAX 是通过一个按钮提交一个简单的表单,其中 AJAX 链接到的文件是特定于该进程的,而不是开关的一部分。
我在网上通过 SO 进行了搜索,但没有找到任何关于如何做到这一点的示例。
欢迎任何建议或示例!
【问题讨论】:
-
不清楚你的锚是如何被使用的。您可能会将您的 PHP sn-p 精简到相关的内容(并正确标记它)。如果此问题依赖于 Zen 功能,则应将其标记为此类。
-
事实上,我开始怀疑您显示的锚标记是否相关。这似乎是一个PHP问题,或者您需要学习ajax并在提问之前做出努力。你的问题是关于 PHP 还是 JavaScript?
-
@isherwood 我可以向您保证,我发布的生成的 html 用于触发案例 'add_to_favourites': 已发布。正如我的问题中所述,我过去做过少量的 AJAX,但它是用于表单提交,而不是带有操作的 href 链接。我在谷歌上搜索了一些关于这样做的信息,但一无所获。如果我不想在操作完成后重新加载页面,那么我需要使用 AJAX,所以这不是 PHP 问题。