首頁 >後端開發 >php教程 >儘管 PHP 函數中有 echo 語句,為什麼我的 WordPress AJAX 呼叫仍回傳「0」?

儘管 PHP 函數中有 echo 語句,為什麼我的 WordPress AJAX 呼叫仍回傳「0」?

Barbara Streisand
Barbara Streisand原創
2024-10-30 19:38:03522瀏覽

Why is my WordPress AJAX call returning '0' despite having an echo statement in the PHP function?

如何在WordPress 中調用Ajax

問題

AJAX 調用總是產生“0”下開發商疑惑不已。 functions.php 檔案包含以下程式碼:

<code class="php">function get_data() {
    $abc = '1';
    $result = $wpdb->get_results("SELECT * FROM " . $wpdb->options . " WHERE option_name LIKE '_transient_%'");
    echo $result; // Outputting this value but still displays 0
    wp_die();
}

add_action('wp_ajax_nopriv_get_data', 'get_data');
add_action('wp_ajax_get_data', 'get_data');</code>

同時,AJAX 呼叫是透過 JavaScript 進行的:

<code class="javascript">$('body').on("click", ".re-reset-btn", function(e) {

    var panel = $('#re-compare-bar');

    $.ajax({
        type : "GET",
        dataType : "json",
        url : "/wp-admin/admin-ajax.php",
        data : {action: "get_data"},
        success: function(response) {

            alert("Your vote could not be added");
            alert(response);
        }
    });

    $("#re-compare-bar-tabs div").remove();
    $('.re-compare-icon-toggle .re-compare-notice').text(0);

});</code>

儘管嘗試輸出變數 $abc,但結果保持 '0'。

在 WordPress 中,預設為 AJAX 呼叫提供全域變數 ajaxurl。然而,這個變數沒有在前端定義。要在前端使用 AJAX 調用,您需要手動定義 ajaxurl。

建議的方法是使用 wp_localize_script。考慮到您的AJAX 呼叫位於「my-ajax-script.js」中,請新增wp_localize_script,如下所示:

<code class="php">function my_enqueue() {
      wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/js/my-ajax-script.js', array('jquery') );
      wp_localize_script( 'ajax-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
 }
 add_action( 'wp_enqueue_scripts', 'my_enqueue' );</code>

JS 檔案在地化後,您可以存取JS 檔案中的my_ajax_object 物件並修改您對應的AJAX 呼叫:

<code class="javascript">jQuery.ajax({
    type: "post",
    dataType: "json",
    url: my_ajax_object.ajax_url,
    data: formData,
    success: function(msg){
        console.log(msg);
    }
});</code>

以上是儘管 PHP 函數中有 echo 語句,為什麼我的 WordPress AJAX 呼叫仍回傳「0」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn