2016-03-06 134 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 –