0

ページを更新せずに何かをしようとしています (しかし、私が行っている方法では、ページを更新する必要があると思います。最終的な目標は、ページを更新しないことです。

1 つは基本的な html で、もう 1 つは Ajax を理解していません。

HTMLの問題

この要素の横にあるリンクをクリックすると:

<label class="checkbox">
    <input type="checkbox" name="aisis_options[package_Aisis-Related-Posts-Package-master]" 
    value="package_Aisis-Related-Posts-Package-master" checked=""> 
        Aisis-Related-Posts-Package-master <a href="#">(Disable)</a>
</label>

次に、次の JS を実行します。

(function($){   
    $(document).ready(function(){
        $('a').click(function(){
          var el = $(this).prev('input[type="checkbox"]');
          if(el.is(':checked')){
               el.prop('checked',false);   
          }
        });
    }); 
 })(jQuery);

チェックを外しますが、ページが更新されて一番上にスクロールします。これを止めるjsの方法があると思いますか、<a href="">それとも部分に「#」を入れるのは私の愚かさですか?

アヤックスの問題

クライアントからサーバーに情報を渡す以外は全くajaxがわからないので、上記のJSに以下を追加しました。

(function($){   
    $(document).ready(function(){
        $('a').click(function(){
          var el = $(this).prev('input[type="checkbox"]');
          if(el.is(':checked')){
               el.prop('checked',false);   
          }
          $.ajax({
              url  : <?php CORETHEME_ADMIN_TEMPLATE_HELPER . 'UncheckPackageThemeHelper.php';?>,
              type : 'GET',
              data : { 'element_name' : el.prop('name') }       
          });
        });
    }); 
 })(jQuery);

次に、次のクラスを作成しました。

class CoreTheme_AdminPanel_Template_Helper_UncheckPackageThemeHelper{

    private $_element_name = null;

    public function __construct(){

        if(isset($_GET['element_name'])){
            $this->_element_name = $_GET['element_name'];
            echo $this->_element_name;
        }
    }
}

基本的にelement_name、チェックされたオブジェクトのチェックボックスの横にある無効化リンクをクリックすると、エコーが表示されます-可能であれば、ページの更新なしで。

私の問題は、この質問への回答から取得した要素のチェックを外すためのJavaスクリプトを除いて、私が行ったことが正しいかどうかを理解していないことです 。

助けてください、アイデアは次のとおりです。無効をクリックし、チェックボックスを無効にし、要素名をPHPに渡してエコーします-可能であればページを更新しません。

アップデート

このクラスはインスタンス化されません。これまで。どこでも。アイデアは、これをすべてクリックで行うことです。無効をクリックし、要素名をクラスに渡してから、そのクラスがページを更新せずにすべての変数をエコーするようにします...

4

3 に答える 3

0

HTMLの問題:Arunが言っ たようe.preventDefault()に、デフォルトのクリックアクションを防ぐために使用します。

AJAX の問題:私が気付いたのは、URL がエコーされていないことです。変化する

<?php CORETHEME_ADMIN_TEMPLATE_HELPER . 'UncheckPackageThemeHelper.php';?>

<?php echo CORETHEME_ADMIN_TEMPLATE_HELPER . 'UncheckPackageThemeHelper.php';?>
于 2013-08-10T15:45:02.220 に答える
0

HTMLの問題。問題は、デフォルトのアクションを防止していないことだと思いますa

(function($){   
    $(document).ready(function(){
        $('a').click(function(e){
          var el = $(this).prev('input[type="checkbox"]');
          if(el.is(':checked')){
               el.prop('checked',false);   
          }
          e.preventDefault();//prevent the default action
        });
    }); 
 })(jQuery);
于 2013-08-10T14:15:07.173 に答える