簡體   English   中英

調用AJAX時Wordpress插件中的未定義索引

[英]Undefined index in Wordpress plugin when call AJAX

我為Wordpress創建了插件,現在嘗試在plugin中學習Ajax

當我調用函數時:

wp-admin/admin-ajax.php?action=my_action

我收到此錯誤:

注意:未定義索引:任何

這是我的職責

add_action( 'admin_footer', 'my_action_javascript' ); // Write our JS below here

function my_action_javascript() { ?>
    <script type="text/javascript" >
    jQuery(document).ready(function($) {
        var data = {
            'action': 'my_action',
            'whatever': 1234
        };
        // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
        $.post(ajaxurl, data, function(response) {
            alert('Got this from the server: ' + response);
        });
    });
    </script> <?php
}

和函數回調

add_action( 'wp_ajax_my_action', 'my_action_callback' );
function my_action_callback() {
    global $wpdb; // this is how you get access to the database
    $whatever = intval( $_POST['whatever'] );
    $whatever += 10;
        echo $whatever;
    wp_die(); // this is required to terminate immediately and return a proper response
}

是什么導致此錯誤,我該如何解決?

當您向wp-admin/admin-ajax.php?action=my_action發出請求時,它僅包含action查詢字符串參數,而不包括WordPress中的回調函數期望的whatever參數。

如果您希望它在地址欄中的瀏覽器測試中起作用,請將$_POST['whatever']替換$_POST['whatever'] $_REQUEST['whatever'] ,然后在瀏覽器中使用它wp-admin/admin-ajax.php?action=my_action&whatever=1234 -這將通過whatever一個GET ,而在你的Ajax這是一個POST ,但$_REQUEST會看到兩者。

也就是說,您的示例代碼是正確的-我什至在本地安裝上對其進行了測試。 當您的JavaScript執行時,這兩個參數都將作為data對象的一部分包含在內,然后可以在ajax處理程序中進行處理。 只要將您的網站加載到瀏覽器中,代碼就會發出警報,除非您遇到其他JavaScript錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM