2016-12-26 10 views
2

まずは:私は合計newbです。これらの機能は私が今までに書いた最初の機能です。私はWordpressを使用しています(そして、サイトで使用されている最も重要なプラグインはBuddyPressです)。私が本質的にスクリプトにしたいのは、データベースから何かを削除してから、特定のリンクを押すときにページを一度リロードすることです。これ以上何もない。私のスクリプトは無限ループを引き起こしています

私のページが無限ループに陥るInternet Explorerに問題があります。この問題はChromeではまったく発生しません。後

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 

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

次のスクリプトが実行されたリンクを押した場合::私の機能・ファイルでは

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

を以下のが発見された私は、次を含むPHPを持っています私はlocation.reload()の上に置いた次のコードを見つけました:

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

これは無限ループを解消しましたが、それでもChromeと比較して、実際に何が起こりたいのか、Internet Explorerで1回多くリロードされます。

私の貧しい人々のために申し訳ありません。私はスウェーデン人です:-)

私は助けていただきありがとうございます。私は知識を持っている人がいて、すぐに狂ったように見えるものを見たら教えてください。私の問題は多分私のサイトで起こっている他のものと関係しています。

よろしくお願いいたします。

+0

なるほどを、何もひどく場違いそこ –

+0

@Bryantジャクソン思わない:あなたは与える前に、それを自分で学ぶこと偽の評価... –

答えて

2

あなたのコードは次のことを行います:ajaxを起動し、リロードします。 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ちょうどそれを逃した –

関連する問題