2017-02-07 89 views
0

我有一個Ajax函數填充與空選項列表框的問題。我對此很新,而且必須忽略一些東西。數據庫連接通過Sugarcrm完成並工作,因爲我也將它用於自動完成功能。我似乎無法得到選項來填充除空之外的任何東西。填充選擇框使用PHP和Ajax返回空

的index.php

<script> 
     $(document).ready(function(){ 
      $.ajax({ 
       url: 'search.php', 
       type: 'json', 
       success:function(response){ 
        var len = response.length; 
        $("#sel1").empty(); 
        for(var i = 0; i<len; i++){ 
         $("#sel1").append("<option value='"+name+"'></option>"); 

        } 
       } 
      }); 
     }); 

</script> 


      <select id="sel1" multiple size="6"> 
       <option value="0">- Select -</option> 
      </select>  

的search.php

<?php 

global $db; 

$rolelistQry = "SELECT distinct name from acl_roles"; 


$rolelistData = $db->query($rolelistQry); 

$name_array = array(); 

    while($row = $rolelistData->fetch_assoc()){ 
     $name = $row['name']; 
     $name_array[] = array("name" => $name); 
    } 
echo json_encode($name_array); 



?> 

回答

1
$("#sel1").append("<option value='"+name+"'></option>"); 

名變量不存在。嘗試改變它response.name

$("#sel1").append("<option value='"+response.name+"'>"+response.name+"</option>"); 
+0

是的,我剛剛看到這一點。我編輯後 – user2168066

+0

nvm。看到了。無論如何,你能看到什麼'迴應'將返回?做一個快速的console.log(響應),並告訴我它會返回 –

+0

,就像skagzilla提到的那樣。 「」 –

0

我猜你會得到一堆空白選項?

<option value="0">- Select -</option> 

是正確的語法:選項的值(選中時)將爲0,它將顯示Select。

所以,當你在AJAX回調追加新項目,你想擁有的選項顯示的東西:

<option value='name'>NAME</option> 
+0

這很有道理。我仍然得到空白選項,所以我猜它現在與響應有關。 – user2168066

+0

在php中,name_array是否曾經初始化(name_array = [])?我與majorlogic,我們需要一些關於什麼反應回來的信息。 – skagzilla

+0

我發現了這個問題,我有type = json,而不是dataType = json。 – user2168066

0

其實你不通過數組名循環,

這應該工作:

<script> 
     $(document).ready(function(){ 
      $.ajax({ 
       url: 'search.php', 
       type: 'json', 
       success:function(response){ 

        var result = $.parseJSON(response); 

        var len = result.length; 

        $("#sel1").empty(); 
        for(var i = 0; i<len; i++){ 

         $("#sel1").append("<option value='"+ result[i]['name'] +"'></option>"); 

        } 
       } 
      }); 
     }); 

</script> 


      <select id="sel1" multiple size="6"> 
       <option value="0">- Select -</option> 
      </select> 
0

您試圖以數組的形式訪問響應,對吧?

你需要做這樣

$("#sel1").append("<option value='"+response[i].name+"'>"+response[i].name+"</option>"); 

東西拿到項目從響應數組的。 (從majorlogic的答案修改)