2017-06-14 143 views
0

我參考了一些在線和修改的functions.php示例和前端模板來觸發ajax調用來獲取一些數據。但我很難理解鋤頭的數據是從請求的url返回的。Ajax調用不在wordpress中工作

在functions.php的結束,我補充說,

wp_enqueue_script('jquery'); 
function myFunction(){ 
    echo "hi"; 
    die(); 
} 
add_action('wp_ajax_myFunction', 'myFunction'); 
add_action('wp_ajax_nopriv_myFunction', 'myFunction'); 

在我的自定義模板頁,我說,

var datavalue = 'test data string'; 

    jQuery.ajax({ 

     url: "/wp-admin/admin-ajax.php", 
     method: "GET", 
     data: { 'datavar' : datavalue } 

    }).success(function(data) { 

     console.log("successfully run ajax request..." + data); 

    }).done(function(){ 

     console.log("I am from done function"); 

    }).fail(function(){ 

     console.log("I am from fail function."); 

    }).always(function(){ 

     console.log("I am from always function"); 

    }); 

}); 

它運行後,我得到這些答覆。

I am from fail function. 
I am from always function 

我不明白如何從特定網址獲取數據並在ajax的成功函數中顯示結果。

我甚至不知道函數function.php中定義的函數是如何被這個ajax調用調用的?他們有什麼關係?

請解釋。另外我想通過傳遞關鍵字來激發ajax調用來查詢數據庫,我怎麼在wordpress中做到這一點?

+0

檢查您的網絡選項卡,查看AJAX請求的結果,找出請求失敗的原因。無論WordPress中的操作是否正確定義,請求都應該成功。請求是否到達正確的位置? JavaScript代碼是否包含錯誤? – josephting

+0

該請求是對指定的網址進行的,但出現錯誤500. – 112233

+0

你走了。請找出爲什麼服務器返回錯誤。沒有錯誤消息/日誌,它只會是一個猜謎遊戲。 – josephting

回答

1

你的AJAX函數應該包含一個動作參數來告訴admin-ajax你想要執行哪個函數。

url: "/wp-admin/admin-ajax.php", 
    method: "GET", 
    data: { 
     action : 'myFunction' 
    } 

(或者,如果你設置了它,那麼你可以將其包含在你的網址,具體如下)

url: "/wp-admin/admin-ajax.php?action=myFunction" 

此外,您在functions.php的功能應該寫在PHP :

function myFunction(){ 
    echo 'hello'; 
    die(); 
} 
+0

我嘗試了url中的addign動作參數,並試圖將其添加到數據中,但仍未獲得成功函數的響應 – 112233

+0

您是否使用有效的php編寫了函數? –

+0

是的,我沒有注意到我的錯誤,並通過編寫有效的PHP有糾正..但服務器仍然返回500錯誤 – 112233

0

您沒有在「數據」中傳遞「動作」參數。其中包含回調函數的名稱。請檢查附加的鏈接。 https://www.sitepoint.com/how-to-use-ajax-in-wordpress-a-real-world-example/

在這你必須做一個回調函數。 Wordpress dsnt與特定的URL一起工作。

但是,如果你仍然想使用特定的網址。遵循以下步驟: - 1.製作一個WordPress模板。 2.在那裏添加您的特定網址代碼。 3.在管理面板中創建一個頁面,並分配您在上面創建的模板。 4.現在該頁面的永久鏈接可以用作jQuery ajax中的特定網址。

1

你必須在ajax上使用一個動作。

jQuery.ajax({ 
     url: "/wp-admin/admin-ajax.php", 
     method: "GET", 
     data: { 
      action : 'myFunction' 
      'datavar' : datavalue, 
     } 
    }); 

PHP函數需要編輯。

function myFunction(){ 
    echo 'success calling functions'; 
    wp_die(); 
} 
+0

我添加了操作,但仍然得到響應失敗功能,而不是成功 – 112233

+0

是的,我寫了一個有效的功能,檢查我的編輯帖子 – 112233

+0

我已添加php示例函數。 –