2014-01-23 168 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文件中。

相关问题