我在使用Chrome和AJAX时遇到了一个非常奇怪的问题,我有一个已经工作了一段时间的自动填充表单。今天早上我启动了Visual Studio,它不再起作用了。它在生产中很好(使用Chrome),如果我使用Firefox或IE,它在本地工作正常,对于chrome它没有!
我收到错误:
无法加载资源
在开发者工具中,当我扩展错误时,我得到了:
f.support.ajax.f.ajaxTransport.sendjquery-1.7.1.min.js:4
f.extend.ajaxjquery-1.7.1.min.js:4
$.autocomplete.sourceCreate:217
a.widget._searchjquery-ui-1.8.17.custom.min.js:127
a.widget.searchjquery-ui-1.8.17.custom.min.js:127
(anonymous function)jquery-ui-1.8.17.custom.min.js:127
我在服务器的回调函数中放置了一个断点,但它甚至没有到达服务器。错误肯定在客户端,这是客户端代码:
$("#LocationTxt").autocomplete({
minLength: 4,
source: function (req, resp) {
$.ajax({
type: "GET",
url: "/Ad/SearchLocations",
data: "term=" + req.term,
contentType: "application/json; charset=utf-8",
success: function (data) {
resp($.map(data, function (value, key) {
return { data: value, label: data[key].Name, value: data[key].Name };
}));
},
error: function (data) {
alert(data.statusText);
}
});
},
select: function (e, ui) {
var cityId = ui.item.data.Id;
$('#AdListing_LocationID').val(cityId);
}
});
此外,错误事件被触发,而statusText属性只是“错误”。不是很有帮助。我正在运行Chrome版本:17.0.963.46(我的最新版本为2012年2月9日)。我相信今天早上当我启动电脑时我的Chrome更新了,但我不确定。我的chrome更新时是否有日志告诉我?
答案 0 :(得分:1)
如果您正在处理代码的本地副本,请确保您在诸如localhost之类的Web服务器中工作。如果您直接在文件系统中工作,Google Chrome将不允许您出于安全原因对文件系统上的文件发出ajax请求。
还有一些事情......
删除它:
contentType: "application/json; charset=utf-8",
您没有发送json,而是发送GET请求。相反,添加此
dataType: "json",
以便jQuery期望接收json。
使用正确的字符集application/json
让服务器返回标题将contentType设置为utf-8
也可能会有所帮助。