2012-07-02 61 views
0

我寫了這段代碼它所做的是如果用戶輸入郵編或城市名稱從數據庫中使用類似的查詢現在提取問題是我有兩個字段一個是城市和其他郵政編碼1260左右的記錄jquery自動完成太慢

 SELECT code, area FROM post_codes WHERE code LIKE '$q%' or area LIKE '$q%' ORDER BY area LIMIT 4 

我已閱讀用戶發佈的許多問題,研究網上以及但沒有任何工程使用的查詢延遲以及.I甚至都收錄在數據庫中這些字段以及..其獲得的記錄速度過慢也就是第一個問題現在我的第二個問題是當用戶在該文本字段進行搜索時,他按下Tab鍵,他可以繞過搜索並編寫任何無效的代碼,他希望如何限制這裏是我的代碼以供參考。

 $("#Postcode").autocomplete("get_codes2.php", { 


     width: 260, 
queryDelay:0, 

    dataType: 'json', 
    parse: function(data) { 
      var array = new Array(); 
      for(var i=0;i<data.length;i++) 
      { 

      array[array.length] = { data: data[i], value: data[i].areacode, result: data[i].areacode}; 

      } 
      return array; 
    }, 

    formatItem: function(row) {      





    return row.areacode; 
    } 






}).result(function(){ 
+0

done ....謝謝 –

+0

對於初學者,您可以嘗試檢查輸入是否是郵政編碼。我不知道這些代碼是如何生活的,但是在挪威,他們總是4位數字,所以對我來說,分開這些代碼會非常簡單。不知道你的情況。 – OptimusCrime

+0

作爲一個側面節點:您的代碼看起來很容易受到SQL注入的影響。 – jantimon

回答

1

我認爲Drupal's API search有一個非常好的方法來解決這個問題。他們的替代方案是讓每次增量搜索都在後端進行,可以提供一個大的JSON file,用於在客戶端自動完成。

在他們的實現中,他們正在偵聽搜索輸入的焦點事件,只在實際需要時才抓取JSON。

+0

傳遞的,但我必須編寫搜索代碼就像MYSQL SQL查詢 –

+0

爲什麼?這個說法完全避開了這個要求。相反,你需要運行'SELECT code,area FROM post_codes',把它作爲一個大的JSON文件來處理,然後做匹配的客戶端。 jQuery Autocomplete內置支持使用本地數據。 –

+0

好的,看看有沒有什麼區別謝謝 –