请务必阅读整个问题,这里有两个问题
另请注意:我是ajax的新手,不知道自己在做什么,我读过Jquerys的ajax文档,但我不确定我应该做什么。
问题1
我最近问了一个关于如何做到这一点的问题,但没有人回答关于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请求,但它不是——我不这么认为。我没有提交任何形式的表单,我也不打算提交表单。我只想单击链接,取消选中复选框,将该元素的名称传递给类,并将名称回显出来
我该怎么做?
第一个问题的原因是/var/www
是带有标志www的正则表达式/var/,正常标志是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);
}
});