我知道问题标题似乎是重复的,但我一直无法找到这个问题的答案。
我正在使用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数据 ,但我的文本框中没有发生任何事情。提前感谢任何可以提供帮助的人。
答案 0 :(得分: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]}
}))
}
})
}
});