2017-04-03 64 views
0

所有似乎都是爲了,但仍然沒有得到目的地填充。WordPress的Ajax調用不工作的自定義頁面

到目前爲止,我已經驗證它可以在我創建的插件中找到PHP和JS文件,甚至可以在XML中生成輸出。我可以看到是否讓默認的<a>標記行爲。

不知何故,它會阻止產生輸出的位置。

謝謝

這是一個自定義頁面。

1 - 下面是HTML:

鏈接到觸發AJAX:

$link = admin_url('admin-ajax.php?action=pay_dialog_step1&boo_zone='.$palier['palier']); 

<a href="' . $link . '" id="' . $palier['palier'].'" class="do_popup btn btn-lg">'.get_option('_boopass_buybtn_label', '').'</a> 

司來填充:

<div id="alloconv_popup"></div> 

2- PHP代碼在一個插件目錄

add_action("wp_ajax_pay_dialog_step1", "pay_dialog_step1"); 

// ajax call 
    function pay_dialog_step1(){ 
     $boo_zone = $_REQUEST['boo_zone']; 
     $response = new WP_Ajax_Response; 
     $html = '<div class="bp_entry_wrapper"> 
          <div class="entry normal" > 
           <div class="alloconv_palier_header" > 
            <p> Alloconv ' . get_option('alloconv_' . $_REQUEST['boo_zone'] .'_token', '') . ' tokens </p> 
           </div>';       
     $html.= get_option('alloconv_' . $_REQUEST['boo_zone'] .'_script', '');          
     $html.=  "</div>"; 
     $html.=  "</div>"; 

     $response->add(array(
      'data' => 'success', 
      'supplemental' => array(
       'boo_zone' => $boo_zone, 
       'message' => $html, 
      ), 
     ));   
     $response->send(); 
     exit(); 
    } 

add_action('init', 'ajax_popup_script'); 

function ajax_popup_script() { 
wp_register_script("ajax_popup_script", WP_PLUGIN_URL.'/ajax-popup-paiement/ajax_popup_paiement.js', array('jquery')); 
wp_localize_script('ajax_popup_script', 'ajaxPaiement', array('ajaxurl' => admin_url('admin-ajax.php'))); 

wp_enqueue_script('jquery'); 
wp_enqueue_script('ajax_popup_script'); 

} 

3 jq在相同的插件目錄上的代碼

jQuery(document).ready(function() { 

jQuery(".do_popup").click(function(e) { 
    e.preventDefault(); 
    var link = this; 
    var boo_zone= jQuery(link).attr("id"); 
    var info = { 
     action: 'pay_dialog_step1', 
     boo_zone: boo_zone 
    }; 

    // Post to the server 
    jQuery.ajax({ 
     type:"POST", 
     url:ajaxPaiement.ajaxurl, 
     data:info, 
     dataType:html, 
     success: function(data){   
      jQuery("#alloconv_popup").html(data); 
     } 
    });  
}); 
}); 
+0

嗨,你確定你的ajax的網址參數?我相信你目前正在2.8的更高版本中開發。嘗試在你的ajax url參數中使用ajaxurl變量。 Docs @https://codex.wordpress.org/AJAX_in_Plugins –

+0

謝謝@jameshwartlopez。這是我最近嘗試找出問題所在。我實際上使用ajaxPaiement.ajaxurl。更正以上 – BernardA

回答

0

你必須讓wp知道誰可以使用ajax調用。

wp_ajax是管理部分

add_action('wp_ajax_process_ajax_input', 'callBackFunction_Name'); 

wp_ajax_nopriv對於非管理員(用戶)

add_action('wp_ajax_nopriv_process_ajax_input', 'callBackFunction_Name'); 

這是回調函數,然後將處理您的Ajax調用。

function callBackFunction_Name{ 

    $allFields = $_REQUEST; 
    #todo process input. 
} 
+0

謝謝@dsadnick但這已經完成。看看上面的php文件的第一行(非管理員用戶部分除外)。 – BernardA

0

我終於找到了問題所在。簡單地說,在ajax調用中,數據類型應該是'xml'而不是'html'。

WP_Ajax_Response生成一個XML文件,所以需要相應地調整ajax調用。