Использование xml в качестве источника в автозаполнении jquery - PullRequest
0 голосов
/ 06 января 2011

Я пытаюсь использовать автозаполнение jquery для ввода текста. Я хочу, чтобы, когда пользователь вводит букву, результаты, начинающиеся с указанной буквы, будут отображаться из источника XML Но я не могу заставить это работать. Поскольку я совсем новичок в jquery, я не знаю, что я делаю неправильно. Пожалуйста, помогите:)

Также я проверил php файл, он отлично работает как xml

Вот код

$("#names").autocomplete({
    source: function(request , response){
        $.ajax({
           type: 'GET',
            url: 'name.php',
            dataType: "xml",
            data: "letter="+request,
            success: function(data) {
                var xml;

                if (typeof data == "string") {
                    xml = new ActiveXObject("Microsoft.XMLDOM");
                    xml.async = false;
                    xml.loadXML(data);
                } else {
                    xml = data;
                }

                var array = [];
                var i = 0;

                $(xml).find('nameslist').each(function(){
                    array[i] = $(this).find("name").text();
                    i++;
                });
            }
        }); 
        response(array);
    },
    minLength: 1
});     

Ответы [ 4 ]

1 голос
/ 07 января 2011

Вот решение, которое я нашел для кода выше

в .js

$("#names").autocomplete({
    source: function(request , response){
        $.ajax({
            type: 'GET',
            url: 'names.php',
            data: "letter="+$("#names").val(), //request doesn't work here, I don't know why
            success: function(data) {
                var explode = data.split("|");                      
                response(explode);
            }
        }); 
    }
});

в php файле

if(isset($_GET['letter'])){
    $letter = $_GET['letter'];
    $sql = "select name from name_list where name like '".$letter."%'";
    $query = mysql_query($sql);

    while($result = mysql_fetch_row($query)){
        echo $result[0].'|';    
    }
}
1 голос
/ 06 января 2011

Так что иди с JSON:)

$("#names").autocomplete({
    source: function(request , response){
        $.ajax({
           type: 'GET',
            url: 'name.php',
            dataType: "json",


В вашем 'name.php' выполните следующие действия

<?php
  // do all your code here, get names etc....

  // lets say your array with names looks like this
  // $names = array('Peter', 'John', 'Tom', 'Andy');

  // serialize the array and send it to the browser
  echo json_encode($names);     <b>// edited here</b>
?>


В вашем файле .js ...

  var names = jQuery.parseJSON('["Peter","John","Tom","Andy"]');
  // just to try, if this works, uncoment alert() below this
  //alert( names[3] );


Итак, мой полный код будет выглядеть так:

$("#names").autocomplete({
    source: function(request , response){
        $.ajax({
            type: 'GET',
            url: 'name.php',
            dataType: "json",
            data: "letter="+request,
            success: function(data) {
                var names = jQuery.parseJSON(data);   
            }
        }); 
        response(names);
    },
    minLength: 1
});
0 голосов
/ 06 января 2011

Почему вы хотите получить письмо из XML-файла? Почему бы не прикрепить буквы с помощью .html к разделу ниже. Если вы выполняете автозаполнение идентификатора, у вас есть база данных mysql, которая будет содержать список элементов для автозаполнения и каждого текстового поля для проверки каждого ключевого слова, если текстовое поле содержит строку, если оно выполняет ajax-запрос с jquery в ваш php-файл, куда вы затем удаляете $ get searchword, тогда вы можете получить его внутри результатов php-файла, например, получить строку, а javascript внизу присоединить строку к вашему div с помощью html

0 голосов
/ 06 января 2011

Я новичок в JQuery, но не должен ли он быть typeof (data) == "string" ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...