2014-01-23 178 views
0

我想根據wordpress模板中另一個組合框中的選擇來填充組合框。組合框的選項來自數據庫。我使用AJAX從combobox1獲取數據,然後發送到help.php。在help.php中,有一個查詢來填充選項,然後顯示在combobox2中。但是,當我在combobox1中選擇選項時,combobox2沒有響應。除了來自combobox1的ID已成功發送。然後我意識到,查詢沒有執行。我覺得這個腳本如下根據wordpress中另一個組合框中的選擇填充組合框

global $wpdb 

是主要問題。所以這是一個問題: 1.如何使全局$ wpdb執行? 2.如果global $ wpdb成功執行,combobox2會自動填充嗎?

這裏的形式爲劇本

<form method="post"> 
     <table> 
      <tr> 
       <td width="200px"> 
       <select name="region" id="region" style="width:200px;"> 
        <option value="0">-- Choose --</option> 
        <!-- region --> 
        <?php 
        if(count($region)){ 
         foreach($region as $reg){ 
          echo '<option value='.$reg->id_region.'" >'.$reg->name_region.'</option>'; 
         } 
        } else { 
         echo '<option value="">No result</option>'; 
        } 
        ?> 
       </select></td> 
       <td width="200px"><select name="subregion" id="subregion" style="width:200px;"> 
        <option value="0">-- Choose --</option> 
       </select> 
       </td> 
       <td><input type="submit" value="Process" class="button" /></td> 
      </tr> 
     </table> 
    </form> 

這裏是AJAX

<script src="http://code.jquery.com/jquery-1.10.2.min.js" type="text/javascript" >  </script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $("#region").change(function(){ 
     var region = $("#region").val(); 
     $.ajax({ 
      url: "<?php bloginfo('template_url'); ?>/help.php" , 
      data: "region=" + region, 
      success: function(data){ 
       $("#subregion").html(data); 
      } 
     }); 
    }); 

}); 
</script> 

這裏是help.php

<?php 
global $wpdb; 

$sub = $_REQUEST['region']; 
$table_name = $wpdb->prefix . 'sub_region'; 
$query = "SELECT * FROM $table_name WHERE id_region='$sub' "; 
$sql = $wpdb->get_results($query); 

if(count($sql)){ 
    foreach($sql as $q){ 
     echo '<option value="'.$q->id_sub_region.'" >'.$q->name_sub_region.'</option>'; 
    } 
} else{ 
    echo '<option value="0">-- No Result --</option>'; 
} ?> 

回答

0

在文件的開頭添加require_once('../../../wp-load.php'); help.php(在全局$ wpdb之前)。 這會加載所有內置函數中的wordpress。

希望這會有所幫助。

+0

它的作品!謝謝 – Peron

0

它看起來像你需要使用內置的WordPress AJAX功能。

我相信這樣做是像這樣的最好方法:(不使用WP-load.php)

function enqueue_scripts_styles_init() { 

    // ajax init 
    wp_enqueue_script('ajax-handle-name', plugins_url('/js/the-ajax.js', __FILE__), array('jquery'), 1.0); 
    // set ajaxurl 
    wp_localize_script('ajax-handle-name', 'ajax_object', array('ajaxurl' => admin_url('admin-ajax.php'))); 

} 
add_action('init', 'enqueue_scripts_styles_init'); 

這是我如何插件使用它。要在主題中使用,只需將插件url更改爲模板或樣式表目錄,然後將其放在您的functions.php文件中。

相關問題