2016-03-06 137 views
0

所以我对ajax比较陌生,但我对发生的事情有一个概念。我有一个注册表格,使用数据库中的ajax更新“国家,城市和地区”字段。使用Ajax填充SQL下拉菜单

的PHP看起来是这样的

<select disabled name="City" id="City<?php $template->the_instance(); ?>" > 
     <?php 
      global $wpdb; 

      $results = $wpdb -> get_results("SELECT Distinct City FROM Location WHERE Country = '".$selected_country."'"); 

      foreach ($results as $row) 
      { 
       echo "<option value=\"$row->City\">" . $row->City. "</option>"; 
      } 
      echo "</select>"; 
     ?> 

和Java脚本看起来像这样

$("#Country").change (function(){ 
    var selected_country = $('#Country option:selected').val(); 
     if (selected_country !=''){ 
     $('#City').prop('disabled', false); 
     } 
     else { 
      $('#City').prop('disabled', 'disabled'); 
     } 
     $.ajax({ 
      url: ajax_object.ajaxurl, 
      type : 'post', 
      data : { 
       action : 'fetch_city', 
       selected_country: selected_country 
      } 
      }) 
    }) 

如果我改变,其中请求被发送到myform.php的“URL”,结果下拉列表不会更新实际的数据库结果。我的猜测是我错过了一个步骤。

P.S我没有使用“动作”,因为我不确定它是否有帮助。我没有将它添加到functions.php文件中并动态地将其挂钩。

希望这是有道理的

回答

0

你的$就调用缺少一个成功的功能,例如

success: function(data) { 
     $('#City').html(data); 
    } 

但是,要达到预期的结果,必须从数据库查询中返回适当的json_encoded结果。

+0

我的数据库查询发生在php文件中,而不是java脚本,是否有可能这样做。没有在JS中运行查询?我不太确定 –

+0

数据库访问只能发生在您通过url的ajax调用请求的php代码中:ajax_object.ajaxurl。请注意,您必须注意从此php返回的数据格式,以及如何处理javascript/ajax请求中的结果。 – Malvolio

0

代码的某些部分丢失或损坏?例如,$ selected_country来自哪里?您可能没有任何元素的ID为'City',因为您正在追加$ template-> the_instance()中的任何元素。

您也永远不会处理来自Ajax请求的响应。

+0

城市是另一个下拉列表中的ID –