0

我正在尝试在不刷新页面的情况下做某事(但我认为我这样做的方式需要刷新页面。最终目标是没有页面刷新。

我有两件事不对,一是基本的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);

取消选中它,但页面刷新并滚动到顶部。我假设有一种 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 问题。我认为问题是你没有阻止默认操作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 回答
0

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

于 2013-08-10T14:25:24.373 回答
0

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

AJAX 问题:我注意到您没有回显您的网址。改变

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

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