【发布时间】:2022-01-10 18:24:38
【问题描述】:
我的 wordpress 项目中有“添加到收藏夹”功能,我正在使用 <form> 提交该功能。每次我点击添加到收藏按钮时它都可以工作,但页面总是重新加载,这很烦人,所以我决定使用 AJAX,但我无法将它与我的 PHP 文件连接。
这是 PHP 文件,我在其中编写了该功能的函数
if (! function_exists('favorite_button_icon')) {
function favorite_button_icon() {
echo apply_filters( 'favorite_button_icon', get_the_favorite_button_icon() );
}
}
if (! function_exists('get_the_favorite_button_icon')) {
function get_the_favorite_button_icon() {
$output = '';
$action = $currentPath; // window.location.href
$name = is_favorite() ? 'remove_favorite' : 'add_favorite';
$class = 'favorite-button-pro' . ( is_favorite() ? ' favorite' : '' );
$icon = is_favorite() ? 'Added' : 'Add';
$output .= '<form method="post" id="favorite_user_post"
class="favorite_user_post" action="'. $action .'">';
$output .= '<button id="submit-favorite" type="submit" name="'. $name .'"
value="'. get_the_ID() .'" class="'. $class .'">';
$output .= $icon;
$output .= '</button></form>';
return apply_filters( 'get_the_favorite_button_icon', $output );
}
}
我只是在 html 中调用该函数
<div class="add-to-favorites-option" >
<?php favorite_button_icon() ?>
</div>
上述一切正常,但正如我所说,页面正在重新加载。
这是我使用 AJAX 的尝试
jQuery('#favorite_user_post').submit(function (e) {
e.preventDefault();
var form = jQuery(this);
var url = form.attr('action');
jQuery.ajax({
type: 'POST',
url: url,
data: form.serialize(),
success: function (data) {
console.log(data);
},
error: function () {
console.log('Fail');
},
});
});
我在提交时完全没有火,我错过了什么吗?
【问题讨论】:
-
你可以试试委托 -
jQuery('body').on('submit', '#favorite_user_post', function (e) { -
如何从Ajax调用php函数stackoverflow.com/a/39342373/12232340
-
感谢@Kinglish 的评论,但我得到了相同的结果。
-
所以弄清楚为什么提交事件处理程序没有绑定到表单。
标签: javascript php jquery ajax wordpress