【发布时间】:2015-07-14 15:42:17
【问题描述】:
所以对于我的 AJAX 选项卡,我有以下脚本:
<script>
jQuery(document).ready(function() {
jQuery('.royal_private_menu a').click(function(e) {
e.preventDefault();
var tab_id = jQuery('this').attr('id');
jQuery.ajax({
type: "GET",
url: "wp-admin/admin-ajax.php",
dataType: 'html',
data: ({ action: 'my_tab_menu', id: tab_id}),
success: function(data){
jQuery('#private_menu_'+tab_id).html(data);
},
error: function(data)
{
alert("Error!");
return false;
}
});
});
});
</script>
url: "wp-admin/admin-ajax.php" 出现以下错误,错误为 example.com/wp-admin/admin-ajax.php?action=my_tab_menu 404 Not found。
然后我将其更改为以下并得到相同的错误:url: "admin_url('admin-ajax.php')" 然后,example.com/admin_url('admin-ajax.php');?action=my_tab_menu 404 Not found。
发生了什么,我做错了什么?
谢谢
编辑
这是我的文件:
所以我觉得我真的很接近让 Ajax 工作了,但是我收到了一个错误:
这里是php:
<div class="royal_private_menu">
<a href="#private_menu" id="items_id">Items</a>
<a href="#private_menu_received_order_id" id="received_order_id">Received Order</a>
<a href="#private_menu_my_orders_id" id="my_orders_id">My orders</a>
<a href="#private_menu_points_id" id="points_id">Points</a>
<a href="#private_menu_setting_id" id="setting_id">Setting</a>
</div>
<div id="private_menu"> <!--Default page -->
<?php get_template_part('page-parts/03_private_items'); ?>
</div>
<div id="private_menu_received_order_id"> </div>
<div id="private_menu_my_orders_id"> </div>
<div id="private_menu_points_id"> </div>
<div id="private_menu_setting_id"> </div>
<script>
jQuery(document).ready(function() {
jQuery('.royal_private_menu 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: 'my_tab_menu', id: tab_id}),
success: function(data){
jQuery('#private_menu_'+tab_id).html(data);
},
error: function(data)
{
alert("Error!");
return false;
}
});
});
});
</script>
在我的function.php中:
function my_tab_menu() {
$template_part_path = 'page-parts/03_private_' . $_GET['id'];
get_template_part($template_part_path);
}
add_action('wp_ajax_my_tab_menu', 'my_tab_menu');
add_action('wp_ajax_nopriv_my_tab_menu', 'my_tab_menu');
这是我的文件名:
03_private_items.php
03_private_my_orders.php
03_private_points_id.php
03_private_received_order_id.php
03_private_setting_id.php
编辑 2
我将success 更改为alert("Success!"); 并收到Success 警报。所以一切正常,除了它没有从其他 php 文件中获取任何数据。我错过了什么?
编辑 3
使用console.log(data);,这是我在控制台中看到的脚本:
jQuery(document).ready(function() {
jQuery('.royal_private_menu a').click(function(e) {
e.preventDefault();
var tab_id = jQuery('this').attr('id');
jQuery.ajax({
type: "GET",
url: "http://example.com/wp-admin/admin-ajax.php",
dataType: 'html',
data: ({ action: 'royal_private_tab', id: tab_id}),
success: function(data){
jQuery('#private_menu_'+tab_id).html(data);
console.log(data);
},
error: function(data)
{
alert("Error!");
return false;
}
});
});
});
【问题讨论】:
-
在 wordpress 函数中的任何地方都定义了动作吗?
-
嗯,我在function.php中添加了我的内容