2017-06-05 113 views
1

我正在使用jQuery標籤來編寫使用WordPress的郵件系統。重點在於,當用戶單擊一個表示一個對話的選項卡時,將使用jQuery選項卡的功能自動執行AJAX調用。我編程的jQuery標籤調用一個動作(我也編程)。該動作使用WordPress編程在PHP中,我可以通過localhost/mywebpage/wp-admin/admin-ajax.php?action = my_action調用它。使用WordPress將JSON對象發送到jQuery標籤的AJAX

問題是:jQuery選項卡的默認功能需要PHP文件的原始輸出(ajax操作)。這意味着我必須在PHP文件上編寫HTML代碼,以便將響應放在選項卡面板(ui.panel.html)上。不過,我認爲這是效率低下,我想創建一個JSON對象使用在ui.ajaxSettings.dataFilter函數接收到的WordPres函數wp_send_json_success(jsonObject)。

當我將HTML發送到ui.ajaxSettings.dataFilter函數時,所有內容都正確顯示在jQuery選項卡面板上。但是,當我發送json成功時,我可以在控制檯上看到它,但我無法在jQuery選項卡面板上顯示它。它出現一毫秒,然後消失。所以JSON對象正在接收,但由於某種原因無法顯示。在jQuery選項卡面板上顯示的唯一方法是通過我的PHP函數發送原始HTML。這裏是一個非常簡單的代碼示例:

這是JS功能:

$(selector).tabs({ 
    beforeLoad: function(event, ui) { 
     ui.ajaxSettings.dataFilter = function(response) { 
      console.log(response); 
      ui.panel.html(response); 
    } 
}); 

這是PHP函數,做工不錯:

<?php 
    echo 'Hello World!'; 

這是一個顯示在PHP函數面板一毫秒然後消失。

<?php 
    wp_send_json_success('Hello World!); 

在我看來,我覺得其他的東西正在執行和擦除什麼我都顯示在ui.panel.html但我不是在jQuery的標籤,專家,所以如果有任何人在那裏有更多經驗那可以告訴我它發生了什麼,我真的很感激它。

+0

您是否檢查http://api.jqueryui.com/tabs/#method-refresh? – Twisty

回答

0

我得到它的工作和修復是顯而易見的,但我仍然不確定這是否是最好的方式來做到這一點。這就是我所做的:

var html = $('<div>').addClass('wrapper'); 

$(selector).tabs({ 
    beforeLoad: function(event, ui) { 
     ui.ajaxSettings.dataFilter = function(response) { 

      // Do whatever you want with the JSON object (obviously validations) 
      // In my case I want to create HTML elements with info from the response 
      var response_js_array = JSON.parse(response); 

      html.append($('<div>').text(response_js_array['message'])); 
    }, 
    load: function(event, ui) { 

     ui.panel.html(html); 

     // Do also whatever you want after the messages have been loaded. In my case, 
     // I scroll down to the last message 
     scrollDown(); // This is also a function I programmed 
    } 
}); 
相關問題