2017-02-07 3 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

и точно так же, как упоминал Скагзилла. "" –

0

Я предполагаю, что вы получаете кучу пустых опций?

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

Правильный синтаксис: значение параметра (если выбрано) будет 0, и на нем отобразится Select.

Итак, когда вы добавляете новые элементы в Ajax обратного вызова вы хотите иметь варианты показать кое-что:

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

Это имеет смысл. Я все еще получаю пустые опции, поэтому я предполагаю, что это связано с ответом. – user2168066

+0

В php, инициализируется имя_имя (name_array = [])? Я с majorlogic, нам нужна дополнительная информация о том, какой ответ возвращается. – skagzilla

+0

Я выяснил, что у меня был тип = 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>"); 

, чтобы получить элементы из массива ответов. (изменено с ответа майологом)

Смежные вопросы