我的脚本导致无限循环
My script is causing infinite loop
首先:我是个新手。这些功能是我写过的第一个。我使用 Wordpress(网站上使用的最重要的插件称为 BuddyPress)。我本质上想让脚本做的是从我的数据库中删除一些东西,然后在按下某个 link 时重新加载页面一次。仅此而已。
我在使用 Internet Explorer 时遇到问题,我的页面陷入无限循环。 Chrome 根本不会出现此问题。我有一个 PHP 包含以下内容:
<li><a id="edit" href="#" onclick="runUpdateForm();">Uppdatera profil</a></li>
当按下 link 时,以下脚本是 运行:
<!--Javascript runUpdateForm-->
<script type="text/javascript">
function runUpdateForm() {
$.post ( ajaxurl, {
action:'resetUser',
user_id:jQuery("#user_id").val()
});
window.location.reload();
}
</script>
<!--End Javascript runUpdateForm-->
在我的函数文件中找到以下内容:
function resetUser() {
$user_id=get_current_user_id();
global $wpdb;
$wpdb->query("DELETE FROM wp_profile_updates WHERE user_id='".$user_id."'");
die(); // close the connection
}
add_action('wp_ajax_resetUser', 'resetUser'); // add action for logged users
add_action( 'wp_ajax_nopriv_resetUser', 'resetUser' ); // add action for unlogged users
谷歌搜索了一下后,我发现了下面这段代码,我把它放在 location.reload() 的正上方:
history.pushState("", document.title, window.location.pathname + window.location.search);
这使得无限循环消失了,但它仍然在 Internet Explorer 中重新加载一次,与 Chrome 相比,这是我真正想要发生的事情。
抱歉我的英语不好。我是瑞典人:-)
感谢您的帮助。我需要有知识的人告诉我他们是否立即看到任何看起来很疯狂并且应该改变的东西。我的问题可能与我网站上发生的其他事情有关。
问候。
您的代码执行以下操作:启动 ajax,然后重新加载。由于 ajax 是异步的,它永远不会 post 到服务器,它会被重新加载中断。所以你需要等待 ajax:
<script type="text/javascript">
function runUpdateForm() {
$.post ( ajaxurl, {
action:'resetUser',
user_id:jQuery("#user_id").val()
},function(){
// executed on success
window.location.reload();
});
}
</script>
另外,我想知道 ajaxurl 在哪里定义...
首先:我是个新手。这些功能是我写过的第一个。我使用 Wordpress(网站上使用的最重要的插件称为 BuddyPress)。我本质上想让脚本做的是从我的数据库中删除一些东西,然后在按下某个 link 时重新加载页面一次。仅此而已。
我在使用 Internet Explorer 时遇到问题,我的页面陷入无限循环。 Chrome 根本不会出现此问题。我有一个 PHP 包含以下内容:
<li><a id="edit" href="#" onclick="runUpdateForm();">Uppdatera profil</a></li>
当按下 link 时,以下脚本是 运行:
<!--Javascript runUpdateForm-->
<script type="text/javascript">
function runUpdateForm() {
$.post ( ajaxurl, {
action:'resetUser',
user_id:jQuery("#user_id").val()
});
window.location.reload();
}
</script>
<!--End Javascript runUpdateForm-->
在我的函数文件中找到以下内容:
function resetUser() {
$user_id=get_current_user_id();
global $wpdb;
$wpdb->query("DELETE FROM wp_profile_updates WHERE user_id='".$user_id."'");
die(); // close the connection
}
add_action('wp_ajax_resetUser', 'resetUser'); // add action for logged users
add_action( 'wp_ajax_nopriv_resetUser', 'resetUser' ); // add action for unlogged users
谷歌搜索了一下后,我发现了下面这段代码,我把它放在 location.reload() 的正上方:
history.pushState("", document.title, window.location.pathname + window.location.search);
这使得无限循环消失了,但它仍然在 Internet Explorer 中重新加载一次,与 Chrome 相比,这是我真正想要发生的事情。
抱歉我的英语不好。我是瑞典人:-)
感谢您的帮助。我需要有知识的人告诉我他们是否立即看到任何看起来很疯狂并且应该改变的东西。我的问题可能与我网站上发生的其他事情有关。
问候。
您的代码执行以下操作:启动 ajax,然后重新加载。由于 ajax 是异步的,它永远不会 post 到服务器,它会被重新加载中断。所以你需要等待 ajax:
<script type="text/javascript">
function runUpdateForm() {
$.post ( ajaxurl, {
action:'resetUser',
user_id:jQuery("#user_id").val()
},function(){
// executed on success
window.location.reload();
});
}
</script>
另外,我想知道 ajaxurl 在哪里定义...