AJAX(ADMIN_URL(“管理-ajax.php');?行动=)未找到 [英] AJAX (admin_url('admin-ajax.php');?action=) Not Found

查看:417
本文介绍了AJAX(ADMIN_URL(“管理-ajax.php');?行动=)未找到的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我的Ajax选项卡我有以下脚本:

 <脚本>
    jQuery的(文件)。就绪(函数(){
        jQuery的('。royal_private_menu一)。点击(函数(五){
            即preventDefault();

            VAR tab_id =的jQuery(本)ATTR('身份证')。

            jQuery.ajax({
                键入:GET,
                网址:可湿性粉剂管理员/管理员-ajax.php
                数据类型:HTML,
                数据:({行动:my_tab_menu,ID:tab_id}),
                成功:功能(数据){
                    jQuery的('#private_menu _'+ tab_id)。html的(数据);
                },
                错误:功能(数据)
                {
                    警报(错误!);
                    返回false;
                }
            });
        });
    });
< / SCRIPT>
 

我得到了以下错误与 URL:可湿性粉剂管理员/管理员-ajax.php,误差 example.com/wp-管理员/管理员-ajax.php?行动= my_tab_menu 404未发现

然后,我把它改成下面的,并得到了同样的错误: URL:ADMIN_URL(管理-ajax.php),那么, example.com/admin_url(管理-ajax.php');?行动= my_tab_menu 404未发现

这是怎么回事,什么我做错了?

感谢

修改

下面是我的文件:

所以,我觉得我真的很接近得到阿贾克斯工作,但我得到一个错误:

下面是PHP的:

 < D​​IV CLASS =royal_private_menu>
    &所述; A HREF =#private_menuID =items_id>项目< / a取代;
    &所述; A HREF =#private_menu_received_order_idID =received_order_id>收到的订货及所述; / a取代;
    < A HREF =#private_menu_my_orders_idID =my_orders_id>我的订单和LT; / A>
    &所述; A HREF =#private_menu_points_idID =points_id>积分和所述; / a取代;
    &所述; A HREF =#private_menu_setting_idID =setting_id>设置&所述; / a取代;
< / DIV>
< D​​IV ID =private_menu> <! - 默认页面 - >
    < PHP get_template_part(页面零部件/ 03_private_items'); ?>
< / DIV>
< D​​IV ID =private_menu_received_order_id> < / DIV>
< D​​IV ID =private_menu_my_orders_id> < / DIV>
< D​​IV ID =private_menu_points_id> < / DIV>
< D​​IV ID =private_menu_setting_id> < / DIV>

<脚本>
    jQuery的(文件)。就绪(函数(){
        jQuery的('。royal_private_menu一)。点击(函数(五){
            即preventDefault();

            VAR tab_id =的jQuery(本)ATTR('身份证')。

            jQuery.ajax({
                键入:GET,
                网址:?< PHP的回声ADMIN_URL(管理-ajax.php');>中,
                数据类型:HTML,
                数据:({行动:my_tab_menu,ID:tab_id}),
                成功:功能(数据){
                    jQuery的('#private_menu _'+ tab_id)。html的(数据);
                },
                错误:功能(数据)
                {
                    警报(错误!);
                    返回false;
                }
            });
        });
    });
< / SCRIPT>
 

和我的function.php:

 函数my_tab_menu(){
    $ template_part_path =页面零部件/ 03_private_。 $ _GET ['身份证'];
    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

我改变了成功警报(成功!); 和我的成功警报。所以,一切正常,除了它是不获取来自其他PHP文件中的任何数据。我在想什么?

修改3

使用的console.log(数据); ,这是我在控制台中看到脚本:

  jQuery的(文件)。就绪(函数(){
    jQuery的('。royal_private_menu一)。点击(函数(五){
        即preventDefault();

        VAR tab_id =的jQuery(本)ATTR('身份证')。


        jQuery.ajax({
            键入:GET,
            网址:http://example.com/wp-admin/admin-ajax.php
            数据类型:HTML,
            数据:({行动:royal_private_tab,ID:tab_id}),
            成功:功能(数据){
                  jQuery的('#private_menu _'+ tab_id)。html的(数据);
                  的console.log(数据);
        },
        错误:功能(数据)
        {
        警报(错误!);
        返回false;
        }

        });

 });
 });
 

解决方案
  

然后,我把它改成下面的,并得到了同样的错误: URL:ADMIN_URL(管理-ajax.php),那么, example.com/admin_url(管理-ajax.php');?行动= my_tab_menu 404未找​​到。

如果该URL中包含的文字串 ADMIN_URL(管理-ajax.php'); 那么这意味着你的PHP没有被解析。

尝试:

  URL:?< PHP的回声ADMIN_URL(管理-ajax.php');>中,
 

您也可以使用 wp_localize_script 当你入队一个脚本来设置AJAX网址:

  wp_enqueue_script(AJAX脚本,plugins_url('/js/my_query.js,__FILE__),阵列('jQuery的'));

//在JavaScript中,对象的属性来访问为ajax_object.ajax_url,ajax_object.we_value
wp_localize_script(AJAX脚本,ajax_object,
        阵列('ajax_url'=> ADMIN_URL(管理-ajax.php'),'we_value'=> 1234));
 

HTTPS://$c$cx.word$p$pss。组织/ AJAX_in_Plugins#Separate_Javascript_File

在这种情况下,你会设置这样的网址:

 网​​址:ajax_object.ajax_url,
 

做这种方式的好处是,你不必内嵌您的JavaScript;你可以排队一个JS文件,就像你通常会。

从注​​释:

  

所以,当我去example.com/wp-admin/admin-ajax.php~~V我得到0的空白页上。而这正是显示了ajax标签页上的控制台上。它是正常的吗?

获取一个 0 结果要么意味着你的钩未连接到动作或钩没有输出,并没有退出。

在你的JS,你设置你的行动是这样的:

 的行动:royal_private_tab
 

在你的PHP你宣布你的钩子是这样的:

  add_action('wp_ajax_my_tab_menu','my_tab_menu');
add_action('wp_ajax_nopriv_my_tab_menu','my_tab_menu');
 

您需要可以使用 royal_private_tab my_tab_menu 在这两个地方,例如:

  add_action('wp_ajax_royal_private_tab','my_tab_menu');
add_action('wp_ajax_nopriv_royal_private_tab','my_tab_menu');
 

此外,你应该退出在你的钩子结束:

 函数my_tab_menu(){
    $ template_part_path =页面零部件/ 03_private_。 $ _GET ['身份证'];
    get_template_part($ template_part_path);
    出口;
}
 

So for my AJAX tabs I have the following script:

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

I got following error with url: "wp-admin/admin-ajax.php" and the error is example.com/wp-admin/admin-ajax.php?action=my_tab_menu 404 Not found.

Then I changed it to the following and got the same error: url: "admin_url('admin-ajax.php')" then, example.com/admin_url('admin-ajax.php');?action=my_tab_menu 404 Not found.

What is going on and what am I doing wrong?

Thanks

EDIT

Here is my files:

So I feel like I am really close to getting Ajax working but I am getting an error:

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

And in my 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');

And here is my file names:

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

EDIT 2

I changed the success to alert("Success!"); and I got the Success alert. So everything is working except it is not fetching any data from other php files. What am I missing?

EDIT 3

With console.log(data);, this is the script that I see in the console:

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

        }); 

 }); 
 });

解决方案

Then I changed it to the following and got the same error: url: "admin_url('admin-ajax.php')" then, example.com/admin_url('admin-ajax.php');?action=my_tab_menu 404 Not found.

If the URL contains the literal string admin_url('admin-ajax.php'); then that means you PHP isn't being parsed.

Try:

url: "<?php echo admin_url('admin-ajax.php'); ?>",

You can also use wp_localize_script to set the ajax URL when you enqueue a script:

wp_enqueue_script( 'ajax-script', plugins_url( '/js/my_query.js', __FILE__ ), array('jquery') );

// in JavaScript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value
wp_localize_script( 'ajax-script', 'ajax_object',
        array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'we_value' => 1234 ) );

https://codex.wordpress.org/AJAX_in_Plugins#Separate_Javascript_File

In this case you would set the URL like this:

url: ajax_object.ajax_url,

The advantage of doing it this way is that you don't have to inline your javascript; you can just enqueue a JS file like you normally would.

From the comments:

So, when I went to example.com/wp-admin/admin-ajax.php I get "0" on a blank page. And that is exactly what is shown on the console on the ajax tab page. Is it normal?

Getting a 0 result either means your hook is not attached to the action or your hook generates no output and fails to exit.

In your JS, you're setting your action like this:

action: 'royal_private_tab'

In your PHP your declaring your hooks like this:

add_action('wp_ajax_my_tab_menu', 'my_tab_menu');
add_action('wp_ajax_nopriv_my_tab_menu', 'my_tab_menu');

You need to either use royal_private_tab or my_tab_menu in both places, ex:

add_action('wp_ajax_royal_private_tab', 'my_tab_menu');
add_action('wp_ajax_nopriv_royal_private_tab', 'my_tab_menu');

Also, you should exit at the end of your hook:

function my_tab_menu() {
    $template_part_path = 'page-parts/03_private_' . $_GET['id'];
    get_template_part($template_part_path);
    exit;
}

这篇关于AJAX(ADMIN_URL(“管理-ajax.php');?行动=)未找到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆