WordPress Ajax正在重新加载页面
WordPress Ajax is reloading the page
所以我有这个设置工作得很好,然后突然它停止工作。我已经完成了这个功能,然后转移到另一个功能,没有编辑我的原始代码,它退出了。我删除了我对JS和PHP所做的更改(无关的,但我还是删除了它们),它没有解决我的问题。
这是我的HTML:
<div class="container">
<div class="list_cell_numbers">
<a href="" class="ajax-link" id="1238675309">123-867-5309</a>
<a href="" class="ajax-link" id="9035768321">903-576-8321</a>
</div>
<div class="show_conversation">
<!--Display Database Results Here -->
</div>
</div>
这是我的JS:
jQuery(document).ready( function($) {
$("body").on('click', '.ajax-link', function() {
var data = {
action: 'sms_load_conversation',
cell_number: $(this).attr('id'),
user_store: <?php echo $user_home_store; ?>
};
$.post('http://example.com/wp-admin/admin-ajax.php', data, function(response) {
$('#convo').html(response);
});
alert('clicked');
});
});
下面是PHP处理程序脚本:
add_action('wp_ajax_sms_load_conversation', 'sms_load_conversation');
function sms_load_conversation() {
global $wpdb;
if ( isset( $_POST["cell_number"] ) ) {
$number = $_POST["cell_number"];
$store = $_POST["user_store"];
$sql = "SELECT * FROM sms_log WHERE cell_number = $number AND user_store = $store ORDER BY sent_date ASC";
$msgs = $wpdb->get_results($sql);
echo '<span class="message_option"><a class="ajax-phone-link" id="'.$number.'"><i class="fa fa-phone fa-lg fa-fw"></i>Call Customer</a></span>';
echo '<span class="message_option"><a href="#"><i class="fa fa-archive fa-lg fa-fw"></i>Archive</a></span>';
echo '<span class="message_option"><a href="#"><i class="fa fa-ban fa-lg fa-fw"></i>Archive & Blacklist</a></span>';
echo '<div class="messages">';
foreach ($msgs as $msg) {
$thedate = strtotime($msg->sent_date);
if($msg->bypass) echo '<div class="bypass">Filter Bypassed</div>';
if($msg->direction == 'OUT') {
echo '<div class="from-me">';
} elseif ($msg->direction == 'IN') {
echo '<div class="from-them">';
}
echo $msg->message . '<br />';
echo '<span style="font-size: .65em; ">' . date('l M d 'a't h:i:s A', $thedate) . '</span>';
echo '</div>';
}// msgs foreach
echo '</div>';
wp_die();
}
}
发生的事情是,当我点击class="ajax-link"
的锚点时,(在firebug控制台观看),POST立即以红色显示在控制台,时间在10 - 17ms之间,并且我的页面刷新。
如果我将alert('clicked')
添加到我的JS结束时,POST通常以黑色显示(+550ms),我从ajax得到预期的响应,我得到' ' click ' ';警报,我可以看到在警报的背后,一切都发生在我的页面上,正如预期的那样,但只要我点击"确定";在警报,我的页面再次刷新,我失去了ajax响应,我刚刚得到!
我真的不明白为什么用警告来停止这个过程,一切都正常,但是没有警报,我立即刷新页面,POST行变成红色。看起来页面刷新的速度比ajax返回响应的速度要快,这就是为什么它与警报一起工作。但是为什么我的页面会刷新!?LOL .
任何想法都是赞赏的!
原因是<a>
超链接的click
事件的默认动作是在浏览器中加载所引用的href
URL。由于您将<a>
链接的href
属性设置为没有""
,因此单击它们实际上会在浏览器中加载相同的页面,因此看起来好像页面正在刷新,但实际上它再次加载。
解决方法是停止<a>
链路的默认动作。在事件结束时返回false
,这样它就不会继续执行默认操作。试试这个:
jQuery(document).ready( function($) {
$("body").on('click', '.ajax-link', function() {
var data = {
action: 'sms_load_conversation',
cell_number: $(this).attr('id'),
user_store: <?php echo $user_home_store; ?>
};
$.post('http://example.com/wp-admin/admin-ajax.php', data, function(response) {
$('#convo').html(response);
});
return false;
});
});
相关文章:
- 在新的浏览器选项卡上加载新的aspx页面后调用JavaScript函数
- 更改css链接并等待加载新的css
- 如何在Ajax加载新内容时停止JavaScript执行
- 当在ng视图中加载新路由时,Tabbing(tabindex)针对错误的元素
- 如何使用输入数据加载新的extjs图表
- JQuery Masonry.Ajax图标和“;加载新项目”;绳子放错地方了
- 通过javascript在同一个打开的选项卡中重新加载新的网页内容
- 当用户到达页面右侧时加载新内容
- 数据表 AJAX 筛选器重新加载数据
- 超链接单击以加载新页面并执行JavaScript
- 单击时加载新的 SVG
- 在RadWindow中加载新页面,然后从加载的窗体中关闭窗口
- ajax在页面刷新之前不会加载新的sql结果
- 谷歌地图API-在从ajax页面加载新数据之前清除标记、多段线
- 使用Ajax加载页面,并在必要时加载新脚本
- 加载新页面时的过渡效果,AJAX
- Ajax没有正确加载新页面
- 正在加载新的Javascript,但正在调用旧的Javascript.MVC
- 咕噜咕噜的手表:实时加载重新加载落后 1 步....
- 我怎么能有一个花哨的盒子一样的弹出体加载,但与cookie不连续加载重新加载