2012-06-03 2 views
1

Я пытаюсь настроить плагин автозаполнения для jquery. Это должно быть предельно просто.jQuery ajax issue - не может заставить мою функцию работать

Предполагается вывести список имен из autocomplete.php, а затем отправить «поиск». Он работает, когда я печатаю его вручную, но когда я пытаюсь получить имена с функцией getnames(), это не сработает. Правильно ли возвращаю данные? Файл php также работает.

var options, a; 

function getnames() { 
    $.ajax({ 
     type:'POST', 
     dataType:'json', 
     data:{ }, 
     url:'autocomplete.php', 
     timeout:1000, 
     success:function (data) { 
      return data; 
     } 
    }); 
} 

// Doesn't work: 

// DOC READY 
$("#members").one("click", function() { 
    options = { 
     lookup:getnames() 
    }; 
    a = $('#members').autocomplete(options); 
}); 

// Works: 

// DOC READY 
$("#members").one("click", function() { 
    options = { 
     lookup:["name1","name2"] 
    }; 
    a = $('#members').autocomplete(options); 
}); 

autocomplete.php

<? 
header("Content-Type: application/json", true); 
$info = array("name1","name2"); 
echo json_encode($info); 
?> 

ответ

1

Вы должны получить имена первых и ждать АЯКС ответа. Когда он прибывает, вы должны запустить автозаполнение.

E.g. (непроверенный):

function getnames() { 
    $.ajax({ 
     type:'POST', 
     dataType:'json', 
     data:{ }, 
     url:'autocomplete.php', 
     timeout:1000, 
     success:function (data) { 
      options = { 
       lookup:data 
      }; 
      a = $('#members').autocomplete(options); 
     } 
    }); 
} 

$("#members").one("click", function() { 
    getnames(); 
} 
+0

Спасибо, это сработало хорошо. – domino

-1

Попробуйте это:

function getnames() { 
     var myData; 
     $.ajax({ 
      type:'POST', 
      dataType:'json', 
      data:{ }, 
      url:'autocomplete.php', 
      timeout:1000, 
      success:function (data) { 
       myData = data; 
      } 
     }); 
     return myData; 
    } 
+1

Не так ли, просто верните 'undefined'? – Oleg

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