2016-12-26 3 views
2

Для начала: я полный новичок. Эти функции являются первыми, которые я когда-либо писал. Я использую Wordpress (и самый важный плагин, используемый на сайте, называется BuddyPress). То, что я, по сути, хочу, чтобы скрипт сделал, это удалить что-то из моей базы данных, а затем перезагрузить страницу один раз при нажатии определенной ссылки. Больше ничего.Мой сценарий вызывает бесконечный цикл

У меня проблема с Internet Explorer, где моя страница застревает в бесконечном цикле. Эта проблема вообще не возникает в Chrome. У меня есть PHP, содержащее следующее:

<li><a id="edit" href="#" onclick="runUpdateForm();">Uppdatera profil</a></li> 

При нажатии на ссылку следующий скрипт запускается:

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 

После:

<!--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--> 

В моих функциях-файл найден следующий Несколько раз я нашел следующий фрагмент кода, который я установил прямо над location.reload():

history.pushState("", document.title, window.location.pathname + window.location.search); 

Это привело к тому, что бесконечный цикл исчез, но он все равно перезагружается в Internet Explorer в сравнении с Chrome и тем, что я действительно хочу.

Извините за мой плохой английский. Я швед :-)

Я ценю помощь. Мне нужен кто-то со знанием, чтобы сказать мне, если они что-нибудь видят сразу, что выглядит сумасшедшим и его нужно изменить. Моя проблема, возможно, связана с другими вещами, происходящими на моем сайте.

С уважением.

+0

Ммм, ничто не кажется ужасно неуместны там –

+0

@Bryant Джексон: вы можете узнать сами, прежде чем давать ложные оценки ... –

ответ

2

Ваш код: запустите ajax, затем перезагрузите. поскольку 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 ...

+0

Это само по себе также дало мне бесконечный цикл. Я объединил его с "history.pushState (" ", document.title, window.location.pathname + window.location.search);" (Я положил его выше windows.location.reload();). Большое вам спасибо за решение! Ajaxurl определен в моем заголовке. Должен ли я удалить его оттуда? – solojuve1897

+0

нет, тогда его штраф, ive просто пропустил его –