2011-01-06 59 views
0

我正在嘗試使用jquery自動完成進行文本輸入。我想要的是當用戶鍵入一個字母時,從指定的字母開始的結果將顯示在xml源文件中。但我無法讓它工作。由於我在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 
});  

回答

1

這裏是我發現上面的代碼

解決方案

in .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].'|';  
    } 
} 
0

我是新的JQuery的自己,但它不應該是typeof(data)==「string」

+0

一般AJAX功能工作正常,我用同樣的語法幾個功能,並沒有使問題 – 2011-01-06 16:14:36

+0

你確切地知道它失敗了呢?你是否放棄了ALERT語句來遍歷代碼? – Robert 2011-01-06 16:18:41

+0

它說'數組'是undefined – 2011-01-06 17:46:47

0

爲什麼要抓取xml文件中的一封信?爲什麼不使用.html將字母附加到下面的div。如果你做一個自動完成id有一個mysql數據庫,它將保存一個項目列表的自動完成和文本框每個keyup檢查如果文本框內有一個字符串,如果它做了一個Ajax請求與jQuery的PHP文件,然後你去除在$獲得搜索內容,那麼你可以把它的PHP文件抓取結果像這樣的字符串內,並在底部的JavaScript字符串連接到您的div wwith HTML

1

所以使用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);  // edited here 
?> 


在你的.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 
}); 
相關問題