2016-10-21 15 views
2
によってクリアカート

私はWoocommerce |アヤックス

HTML

<a onclick="clearCart(this)" data-href="/product-page/" data-productID="182">Go to Product</a> 

私のカートをクリアするためにAJAX機能を設定しようとしているJavaScriptの

function clearCart(d) { 
    jQuery(document).ready(function($) { 
     var productID = d.getAttribute("data-productID"); 
     $.ajax({ 
      url: "addtocart.php", 
      data: {productID: productID}, 
      type: "post", 
      success: function(output) { 
       window.location = d.getAttribute("data-href"); 
       //alert(output); 
      } 
     }); 
    }); 
} 

PHP

第三PHPライン
  • によって引き起こさ0

    結果

    • 内部サーバーエラーはアラートVAR出力は

    SOLUTION(outcommentedコードをチェックしてください)作業私はそれを考え出しています私自身と@MirzaPの大きな助けを借りて

    JS

     function clearCart(d) { 
          jQuery.post(
           "https://dercampus.ch/wp-admin/admin-ajax.php", 
           //ajaxurl, 
           { 
            "action": "clearcart", 
            "data": d.getAttribute("data-productid") 
           }, 
           function(){ 
            window.location = d.getAttribute("data-href"); 
           } 
          ); 
         } 
    

    PHP

    add_action('wp_ajax_nopriv_clearcart',function(){ 
        global $woocommerce; 
        $woocommerce->cart->empty_cart(); 
    }); 
    
  • +0

    をPRODUCTIDない

    if(isset($_POST['data']) && !empty($_POST['data'])) { global $woocommerce; $woocommerce->cart->empty_cart(); //echo $_POST['productID']; } 
    にPHPコードを変更してください。あなたのwp-config.phpで真になっています。表示される内部エラーは何ですか? – MirzaP

    +0

    このphpファイルには何も表示されません。それはAJAXコールなので、何か調整する必要がありますか? ファイルがマイプラグインのサブディレクトリにあります –

    +0

    右クリック - >要素の検査 - >コンソール(chrome)を実行するとブラウザコンソールに何かが表示されますか? – MirzaP

    答えて

    2

    に渡されるあなたのパラメータはデータであり、あなたがWP_DEBUGを設定すると

    +0

    ああ、申し訳ありませんAJAX呼び出しを調整するのを忘れて、読みやすくするために投稿を修正しました。編集された投稿をチェックしてください。 –

    +0

    あなたのphpコールの中でechoステートメントをいくつか試してみてください。https://dercampus.ch/wp-content/plugins/dercampus/assets/php/addtocart.php?productId=test直接アクセスできるものがいつどこかにあることを確認してください。 .. PHPコードの_POSTを_REQUESTに変更してください...もちろん、最終製品ではエコーを削除して、一回だけアクセスして直接アクセスなどを防ぐこともできます。 – MirzaP

    +0

    私はその間にそれを考え出しました。 。あなたの時間とajax-adminとWP_DEBUGヒントに感謝します! –