【问题标题】:Not sure how to set up Ajax不知道如何设置 Ajax
【发布时间】:2013-08-11 17:34:05
【问题描述】:

请务必阅读整个问题,这里有两个问题。

另请注意:我是 ajax 新手,不知道自己在做什么,我已经阅读了 Jquerys Ajax 文档,但我不确定我应该做什么。

问题 1

recently asked a question关于如何做到这一点,但没有人回答关于 Ajax 的核心问题,他们都非常关注 HTML,所以这次我会更进一步。

我有以下元素的以下 ajax 函数:

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


(function($){   
    $(document).ready(function(){
        $('a').click(function(){
          var el = $(this).prev('input[type="checkbox"]');
          if(el.is(':checked')){
               el.prop('checked',false);   
          }
          $.ajax({
              url  : /var/www/wordpress/wp-content/themes/Aisis-Framework/CoreTheme/AdminPanel/Template/Helper/UncheckPackageThemeHelper.php,
              type : 'GET',
              data : { 'element_name' : el.prop('name') }       
          });
        });
    }); 
 })(jQuery);

现在我不确定我是否认为你有http://localhost/path/to/class,但它的陈述令人震惊:

Uncaught SyntaxError: Invalid flags supplied to RegExp constructor 'www' admin.php?page=aisis-core-upload:239

那么正确的设置方法是什么?

问题 2

上面的 Ajax 假设它们是一个表单提交,但是查看复选框旁边的“禁用”链接它是 NOT 一个表单提交元素。那么如何在不提交表单的情况下将元素名称传递给类,并且仍然让类回显名称?

这就是我的班级的样子:

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;
        }
    }
}

您可以看到我正在回显元素名称,现在我正在使用 GET,并且在 Ajax 中声明它是一个 GET 请求,但它不是 - 我不认为。我没有提交任何形式的表格,我无意提交表格。我只想单击链接,取消选中复选框,将该元素的名称传递给类并将名称回显。

我该怎么做?

【问题讨论】:

  • 你应该有http://localhost/path/to/class的东西。
  • SO 适用于每个人以及他们广泛不同的技能水平 - 有丰富的经验,许多人乐于尝试和帮助,但对智者说一句话:不要重复问题。如果您想获得更多关注,可以更改原始帖子并添加赏金。

标签: php jquery html ajax


【解决方案1】:

第一个问题的原因是/var/www 是正则表达式 /var/ 带有标志 www,普通标志是 gim。您需要将该路径作为字符串:

url  : "/var/www/wordpress/wp-content/themes/Aisis-Framework/CoreTheme/AdminPanel/Template/Helper/UncheckPackageThemeHelper.php",

你应该只放"/wordpress/wp-content/""/wp-content/",这取决于你的根目录在哪里。

第二个问题:你使用 ajax 中的数据发送 $_GET,并且要从 php 中获取 echo 值,你需要添加回调函数:

      $.ajax({
          url  : "/wp-content/themes/Aisis-Framework/CoreTheme/AdminPanel/Template/Helper/UncheckPackageThemeHelper.php",
          type : 'GET',
          data : { 'element_name' : el.prop('name') },
          success: function(result) {
              alert(result);
          }     
      });

【讨论】:

  • 所以在我的例子中 GET 是我想要的吗?它会自动实例化类吗?它怎么知道我在哪里调用 $_GET?我可以在那里有一个函数来调用它而不是构造函数....
  • @TheWebs 我没看到,你当然需要创建该类的实例new CoreTheme_AdminPanel_Template_Helper_UncheckPackageThemeHelper();
  • 这就引出了在哪里的问题。我在哪里创建它?我再次对这一切陌生,我是否在调用此 JS 的文件中创建它?或者我只是在我喜欢的地方实例化它还是......?有没有关于这个的规则 - ajax 明智的?或者是,“只要它被实例化......”@jcubic
  • @TheWebs 你需要在正在执行的文件中执行它,这与ajax无关。如果你想在构造函数中执行代码,你需要创建一个类的实例。
  • 另外,没有表单提交,为什么我使用GET? - 我知道 POST 用于提交表单,而 GET 主要用于从 URL 获取内容,例如参数等等……谢谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2014-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多