更新了问题以更好地反映社区支持
基于社区支持,我已将Ajax功能更改为:
(function($){
$(document).ready(function(){
$('a').click(function(e){
var el = $(this).prev('input[type="checkbox"]');
if(el.is(':checked')){
el.prop('checked',false);
}
$.ajax({
url : "http://localhost/wordpress/wp-content/themes/Aisis-Framework/CoreTheme/AdminPanel/Template/Helper/UncheckPackageThemeHelper.php",
type : 'GET',
data : { 'element_name' : el.prop('name') },
success: function(data, textStatus, jqXHR){
console.log(data);
},
error: function(jqXHR, textStatus, errorThrown ){
console.log(jqXHR, textStatus, errorThrown);
}
});
e.preventDefault();
});
});
})(jQuery);
生成的PHP类是这样的:
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;
}
}
}
网络标签显示我有一些来自激活我在下面显示的Jquery的输出:
控制台没有错误地吐出,但没有回显元素名称。我已经阅读了Jquery Ajax API,到目前为止,我所做的一切似乎都是正确的。然而,我没有得到理想的输出。
注意:响应标签为空....换句话说,我没有得到回复。
答案 0 :(得分:7)
您没有将事件传递给您的点击处理程序。
使用。
$('a').click(function(e){
// Your code
});
$.ajax({
url : "<?php echo CORETHEME_ADMIN_TEMPLATE_HELPER_URL . 'UncheckPackageThemeHelper.php'; ?>",
type : 'GET',
data : { 'element_name' : el.prop('name') },
success: function(result) {
console.log(result)
},
error: function(jqXHR, textStatus, errorThrown ){
console.log(jqXHR, textStatus, errorThrown);
}
});
答案 1 :(得分:0)
简化情况。稍等一下,将您的AJAX处理器文件(UncheckPackageThemeHelper.php)更改为如下所示:
<强> UncheckPackageThemeHelper.php 强>
<?php
$test = $_POST['element_name'];
$r = 'PHP received: [' .$test. ']';
echo $r;
die();
另外,将AJAX成功函数更改为如下所示:
success: function(result) {
alert(result);
},
至少,这会告诉你你的AJAX正在通过。
然后,开始将内容添加回您的AJAX处理器文件(一次一个或两个)并继续回显某些内容,以便您可以发现错误发生的位置。
答案 2 :(得分:-2)
所以我做了很多错事。但这是它的唯一工作方式,对我来说 - 如果您有更好的解决方案,请发表您的意见。
在课堂上,我必须这样做:
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 json_encode($this->_element_name);
}
}
}
new CoreTheme_AdminPanel_Template_Helper_UncheckPackageThemeHelper();
类无法在.phtml文件中使用生成的Ajax进行实例化,或者永远不会发回请求。还要注意json_encode
你不能将常规变量传递回Ajax - 当在一个类中时(我认为) - 如果不在类中它似乎工作 - 需要澄清。
Ajax然后看起来像这样:
(function($){
$(document).ready(function(){
$('a').click(function(e){
var el = $(this).prev('input[type="checkbox"]');
if(el.is(':checked')){
el.prop('checked',false);
}
$.ajax({
url : "http://localhost/wordpress/wp-content/themes/Aisis-Framework/CoreTheme/AdminPanel/Template/Helper/UncheckPackageThemeHelper.php",
type : 'GET',
data : { 'element_name' : el.prop('name') },
success: function(data, textStatus, jqXHR){
console.log(data);
},
error: function(jqXHR, textStatus, errorThrown ){
console.log(jqXHR, textStatus, errorThrown);
}
});
e.preventDefault();
});
});
})(jQuery);
返回的数据符合我的预期:"aisis_options[package_RelatedPosts]"
这个问题有几个问题 - 我不明白为什么我必须在其编写的文件中实例化类,并且两个不确定为什么我必须在类中编码响应,但不是在它的时候只是一个“脚本小子”文件。