2011-07-25 102 views
2

我知道問題標題看起來像重複,但我一直無法找到這個問題的答案。Jquery UI自動完成不顯示結果

我正在使用Jquery UI的自動完成功能,我可以在調試器中看到正確的JSON數據。然而,沒有東西回到文本框。

我的javascript:

<script type="text/javascript"> 
    $(document).ready(function() { 
     myAutoComplete("#<%= myTxtBox.ClientID %>", "AutoCompletePage.aspx"); 
    }); 

    function myAutoComplete(ObjectId, DataURL) { 
     $(ObjectId).autocomplete({ 
      source: function (request, response) { 
       $.ajax({ url: DataURL, dataType: 'jsonp', 
        data: { q: request.term, limit: 10 }, 
        success: function (data) { 
         response($.map(data, function (item) { 
          return { label: item[1], value: item[0], id: item[0]} 
         })) 
        } 
       }) 
      } 
     }); 
    } 

</script> 

從我AutoCompletePage.aspx頁面的代碼段:

foreach (DataRow dataRow in dataTable.Rows) 
{ 
    string[] cells = new string[] { dataRow[0].ToString(), dataRow[1].ToString() }; 
    output.Add(cells); 
} 

後來......

Response.Write(json.Serialize(output)); 

您可以在這張圖片中即見JSON數據被返回,但沒有發生任何事情發生在我的文本框。提前感謝任何能夠提供幫助的人。

autocomplete results

+0

什麼'myTxtBox'的定義是什麼? – GalacticCowboy

回答

0

我中有你不應該在這裏使用jsonp預感。 JSONP通常用於跨域請求。

看起來你是在同一個域中發出請求(另外,返回的數據可能沒有回調函數可以調用),所以你應該使用正常的json

試着改變你的datatype參數json

$(ObjectId).autocomplete({ 
     source: function (request, response) { 
      $.ajax({ url: DataURL, dataType: 'json', 
       data: { q: request.term, limit: 10 }, 
       success: function (data) { 
        response($.map(data, function (item) { 
         return { label: item[1], value: item[0], id: item[0]} 
        })) 
       } 
      }) 
     } 
    }); 
+0

哇。我試過這麼多的變種,有沒有json/jsonp(也試過類型:POST),但是這個可以工作。感謝您的簡單回答。我使用的是jsonp,因爲它在jqueryui網站的例子中使用,但我想這是因爲他們從不同的域中提取數據。再次感謝。 – WEFX

+0

@WEFX:沒問題!很高興幫助':)' –