将 href 操作替换为 AJAX



>我在产品列表页面上有以下生成的href链接

<a title="Add to My Favourites" class="a2f-link" href="http://epicurium.localhost/by-lifestyle-diet/breakfast?sort=20a&amp;products_id=1838&amp;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没有找到任何如何做到这一点的例子。

欢迎任何建议或示例!

给锚标签 id 并为 ajax 编写脚本

<a id="add_fav" href="javascript:void(0)" ..> img src="">...
$(document).on('click','#add_fav',function(){
//write your ajax call here
$.ajax({
url : 'your_controller_method',
type : 'GET', or "POST" select accordingly 
data : {'product_id' : 1838,
....
},
dataType:'json',
success : function(data) {              
alert('Data: '+data);
},
error : function(request,error){
}
});
})
or you can make javascript function and pass data to function and then set it to ajax data

最新更新