在AJAX中,我是否必须初始化课程?

时间:2013-08-10 14:09:08

标签: php html ajax jquery

我正在尝试通过页面刷新做一些事情(但我认为我的方式,将需要页面刷新。最终目标是没有一个。

我有两个错误,一个是基本的html,另一个是不了解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);

取消选中它,但页面刷新并滚动到顶部。我假设有一种方法可以阻止这种情况,或者可能是我在<a href="">部分使用“#”的愚蠢行为?

Ajax问题

除了将信息从客户端传递到服务器之外,我根本不理解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脚本以取消选中元素which I got from the answer to this question

请帮忙,想法是:单击禁用,禁用复选框,通过将元素名称传递给PHP来回显元素名称 - 如果可能的话,不刷新页面。

更新

此类永远不会被实例化。永远。任何地方。想法是通过单击完成所有操作,我想单击禁用,让它将元素名称传递给类,然后该类通过页面刷新回显变量...

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

虽然您当然可以使用Arun的答案,但您可以删除href属性,它不会转到页面顶部和/或刷新。

答案 2 :(得分:0)

HTML问题:正如Arun所说,使用e.preventDefault()来阻止默认点击操作。

AJAX问题:我注意到你没有回复你的网址。变化

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

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