2011-09-29 73 views
0

我正在構建ASP.NET MVC 3應用程序,我試圖正確地將jQuery autocompletex合併到我的一個頁面中,以便用戶可以鍵入配料名稱或從下拉列表中選擇一個。jQuery自動填充'長度'爲空或不是對象

我得到這個錯誤:

Microsoft JScript runtime error: 'length' is null or not an object 

和我的視圖代碼看起來是這樣的:

$("#ingredientid").autocomplete({ 
    source: function (request, response) { 
     $.ajax({ 
     url: '@Url.Action("AvailableIngredients", "Recipe")', type: "POST", dataType: "json", 
     data: { query: request.term }, 
     success: function (data) { 
      response($.map(data, function (item) { 
       return { label: item, value: item }; 
      })) 
     } 
     }) 
    }, 
    minLength: 1 
}); 

事情似乎在Firefox中正常工作,但IE 8是標準的瀏覽器內部使用。


附加:

我返回數據 - List<string>像這樣:

public JsonResult AvailableIngredients() 
{ 
    ... 
    return Json(allIngredients, JsonRequestBehavior.AllowGet); 
} 

想法?

+0

一切看起來不錯,你有沒有在jsonlint.com驗證你的json響應?你將什麼內容類型返回給json?其他的東西可能會拋出這個錯誤? –

+0

@KevinB - 不幸的是,我不能把這個盒子放在互聯網上去做 - 公司IP就可以了。我很確定這是因爲我沒有使用自動完成功能時出現這種錯誤。 – itsmatt

回答

0

請確保在您的JavaScript包含文件之前聲明您的元標記爲內容類型。看起來像是this問題中的其他人的問題。

+0

謝謝,但沒有效果。我仍然得到錯誤。 – itsmatt

+0

你試過讓ajax調用syncronous嗎? – Evan