【发布时间】:2015-07-14 21:29:47
【问题描述】:
所以,我一直在努力使 ajax 工作。 这是我之前的问题:AJAX (admin_url('admin-ajax.php');?action=) Not Found
无论如何,我决定缩小范围,只保留必要的文件。
这里是设置。
test.php
<div class="test">
<a href="#test_demo" id="demo">Items</a>
</div>
<div id="test_demo"> </div>
<script>
jQuery(document).ready(function() {
jQuery('.test a').click(function(e) {
e.preventDefault();
var tab_id = jQuery('this').attr('id');
jQuery.ajax({
type: "GET",
url: "<?php echo admin_url('admin-ajax.php'); ?>",
dataType: 'html',
data: ({ action: 'test_tab', id: tab_id}),
success: function(data){
jQuery('#test_' + tab_id).html(data);
},
error: function(data)
{
alert("Error!");
return false;
}
});
});
});
</script>
function.php
function test_tab_callback() {
$template_part_path = 'page-parts/test_' . $_GET['id'];
get_template_part($template_part_path);
exit;
}
add_action('wp_ajax_test_tab', 'test_tab_callback');
add_action('wp_ajax_nopriv_test_tab', 'test_tab_callback');
test_demo.php
<div id="test_demo_content">Demo Content</div>
这是我对它应该如何工作的想法。
- test.php:当用户点击
Items按钮时,jQuery中的tab_id变量保存了锚点id(本例中为id="demo")。 - 然后调用admin-ajax.php。
- 然后将保存的 id ("demo") 传递到 function.php 并在变量
$template_part_path = 'page-parts/test_' . $_GET['id'];中使用,该变量为page-parts/test_demo提供test_demo.php 然后调用模板部分,回调给jQuery。
然后将数据“插入”到
jQuery('#test_' + tab_id).html(data);,即id="test_demo。- test_demo.php 内容应该显示在
#test_demodiv 中。
但它不起作用。我使用了console.log(data),但没有显示任何结果。
我做错了什么?
【问题讨论】:
-
div元素上的 href 属性无效(在 test.php 中,id 为 test_demo 的 div -
哎呀,它是固定的。 (不是实际问题)。感谢您指出。
-
我得到了 javascript 在我的答案中工作,但无法测试 php 方面的东西。能否请您应用修复并告诉我这是否适合您?
-
正如您指出的那样,我通过删除引号使其正常工作! =) 你让我很开心!哈哈
标签: javascript php jquery ajax