为什么使用admin-ajax.php?它是如何工作的?

时间:2015-06-09 作者:Claudiu Creanga

我对json数据的ajax调用与此函数类似。php:

add_action( \'wp_ajax_nopriv_load-filter\', \'prefix_load_cat_posts\' );
add_action( \'wp_ajax_load-filter\', \'prefix_load_cat_posts\' );
function prefix_load_cat_posts () {
  //get data here
}
javascript:

var ajaxurl = \'http://\'+window.location.host+\'/wp-admin/admin-ajax.php\';
jQuery.ajax({
    type: \'POST\',
    url: ajaxurl,
    etc.
我有两个问题。

1) 为什么要使用管理ajax。php而不是在单独的文件中编码json,如themes/example/json.php 在那里对你的数据进行编码?

2) 如何管理ajax。php工作?我对那个文件不太了解。它是否加载了所有功能,以便您可以使用它们?

谢谢

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

1) 为什么使用admin-ajax.php 而不是在单独的文件中编码json,如themes/example/json.php 在那里对你的数据进行编码?

使用admin-ajax.php 表示WordPress核心已加载并可用。否则,您将需要手动加载所需的文件,这是一个复杂的过程,如果您不太了解核心,那么很容易失败。还有,您对Javascript安全性的掌握程度如何?

2) 如何admin-ajax.php 工作我对那个文件不太了解。它是否加载了所有功能,以便您可以使用它们?

它加载WordPress核心,这意味着你可以使用$wpdb$WP_Query. 大约是第25行

  1. 一个内容类型标题,告诉浏览器不要缓存结果的标题感兴趣的标题是send_nosniff_headers()
  2. nocache_headers().
  • admin_init 钩火$_GET 或$_POST.
  • SO网友:sohan

    admin-ajax.php 是WordPress的一部分AJAX API, 是的,它确实处理来自后端和前端的请求。以下是我对你的问题的理解:

    2) 如何管理ajax。php工作?

    对于logic 你可以参观这里。

    这假设您已经知道如何将JavaScript等排入队列。

    JavaScript Piece:

    jQuery(document).ready(function($) {
    
        // We\'ll pass this variable to the PHP function example_ajax_request
        var fruit = \'Banana\';
    
        // This does the ajax request
        $.ajax({
            url: ajaxurl,
            data: {
                \'action\':\'example_ajax_request\',
                \'fruit\' : fruit
            },
            success:function(data) {
                // This outputs the result of the ajax request
                console.log(data);
            },
            error: function(errorThrown){
                console.log(errorThrown);
            }
        });   
    
    });
    

    PHP Piece:

    function example_ajax_request() {
    
        // The $_REQUEST contains all the data sent via ajax 
        if ( isset($_REQUEST) ) {
    
            $fruit = $_REQUEST[\'fruit\'];
    
            // Let\'s take the data that was sent and do something with it
            if ( $fruit == \'Banana\' ) {
                $fruit = \'Apple\';
            }
    
            // Now we\'ll return it to the javascript function
            // Anything outputted will be returned in the response
            echo $fruit;
    
            // If you\'re debugging, it might be useful to see what was sent in the $_REQUEST
            // print_r($_REQUEST);
    
        }
    
        // Always die in functions echoing ajax content
       die();
    }
    
    add_action( \'wp_ajax_example_ajax_request\', \'example_ajax_request\' );
    
    // If you wanted to also use the function for non-logged in users (in a theme for example)
     add_action( \'wp_ajax_nopriv_example_ajax_request\', \'example_ajax_request\' );
    
    1)为什么要使用管理ajax。php,而不是在单独的文件(如主题/示例/json)中编码json。php并在那里对数据进行编码?

    这可能会有帮助。admin-ajax.php vs Custom Page Template for Ajax Requests

    结束

    相关推荐

    WordPress AJAX在注册时不工作

    伙计们。我曾尝试用ajax构建wordpress简单的注册表单,但根本不起作用。这是我的代码,一个php和jQuery ajax。请告诉我我的代码有什么问题。仅供参考,(1)“警报”不起作用,(2)数据没有输入到我的自定义表中,(3)我在“我的测试注册表”中添加了“e.preventDefault()”和“return false”。但当我重新加载浏览器时,它并没有避免重新加载表单。// The .php function code if (!defined(\'ABSPATH\'))