2013-02-04 75 views
0

我將自動填充數據源更改爲我的php文件,並且我嘗試了下面的代碼。但這不是工作,有人可以建議如何解決它?jQuery建議自動完成列表未顯示

感謝

$('#search').autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: "/property_bldg.php", 
      dataType: "jsonp", 
      data: { 
       query: request.term 
      }, 
      success: function(data) { 
       response($.map(data.suggestions, function(item) { 
        return { 
         label: item.text, 
         value: item.text 
        } 
       })); 
      } 
     }); 
    }, 
    minLength: 1 
}) 

返回

{query:'A',par1:'',suggestions:['AUSTIN RD','ARCH','ARGYLE ST','AMOY GDN','ARIA','AQUAMARINE','ACADEMIC TERR','APEX','ALLWAY GDN','AP LEI CHAU DRIVE'],data:[]} 

更新時間:

$('#autocomplete_propSearch').autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: "/property_bldg.php", 
      dataType: "json", 
      data: { 
       query: request.term 
      }, 
      complete: function (xhr, status) { 
       if (status === 'error' || !xhr.responseText) { 
        alert('Error') 
       } 
       else { 

        response($.map(xhr.responseText.suggestions, function(item) { 
         return { 
          label: item, 
          value: item 
         } 
        })); 
       } 
      } 
     }); 
    }, 
    minLength: 1 
}) 
+0

你在firebug或javascript控制檯中得到的錯誤 – Satya

+0

@Satya沒有錯誤,所以我不知道錯在哪裏 –

回答

0

你遍歷字符串數組,但在嘗試訪問他們的text財產。更改您的地圖正文爲:

   return { 
        label: item, 
        value: item 
       } 

工作示例jsFiddle。如果這不起作用,請檢查ajax調用是否確實成功完成(例如,通過向控制檯打印data)。

更新:如果您的服務器正在返回你貼什麼,那就不是一個有效JSONP響應。請參閱this tutorial和jQuery docs以瞭解執行JSONP的正確方法(儘管如果您查詢的是服務該頁面的相同域,則更簡單 - 也更安全 - 使用json代替)。

舉例來說,如果你的服務器,接收查詢:

http://127.0.0.1:8080/property_bldg.php?callback=jQuery161006659467399874042_13‌​59964924178&query=a&_=1359964930143 

正確的反應應該是:

jQuery161006659467399874042_13‌​59964924178({query:'A',par1:'',suggestions:['AUSTIN RD','ARCH','ARGYLE ST','AMOY GDN','ARIA','AQUAMARINE','ACADEMIC TERR','APEX','ALLWAY GDN','AP LEI CHAU DRIVE'],data:[]}); 

而且其content-typetext/javascript(不application/json)。如果需要,您可以自定義,請閱讀docs瞭解更多信息。

+0

謝謝你的建議,但不工作 –

+0

@CharlesYeung自動完成部分沒問題,例如我發佈了節目。如果這不能解決問題,問題必須在ajax部分。在'success'開始時調用'console.log(data)'來確認它是否真正起作用(並且數據真的是你期望的)。 – mgibsonbr

+0

是的,我已經嘗試console.log(日期)但沒有顯示在調試控制檯上。我正在使用本地主機,這是造成的問題? –