我正在编写MVC应用程序,我需要通过jsonp通过ajax调用访问某些服务。
然而,当我在Visual Studio(IIS Express)中运行我的代码时,我总是回到状态代码500"请求被阻止",不幸的是,小提琴手没有看到该请求所以我不知道有关错误的更多信息,只有IE / chrome的开发人员工具中的网络选项卡有效。
当我提出请求时,在网络选项卡中,我看到500,我复制了请求网址,将其粘贴到我的浏览器中,等等,它有效,我得到了回复。
现在我已经创建了一个看起来与我使用的代码几乎完全相同的JSFiddle(仅代替内联脚本,我将它放在单独的文件中),令人惊讶的是,JSFiddle工作:
ko.bindingHandlers.autocomplete = {
init: function(element, params) {
$(element).autocomplete(params());
},
update: function(element, params) {
$(element).autocomplete("option", "source", params().source);
}
};
var example = example || {};
example.cities = (function ($, jQuery, ko, undefined) {
"use strict";
function ViewModel() {};
ViewModel.prototype.searchCities = function(request, response)
{
if (request)
{
$.ajax({
url: 'http://gd.geobytes.com/AutoCompleteCity',
type: 'GET',
data: {q: request.term},
dataType: 'jsonp',
jsonp: 'callback',
crossDomain: true,
success: function (data) { response(data); alert('response: ' + data) },
error: function (jqXHR, textStatus, errorThrown) {}
});
}
};
return { ViewModel: ViewModel };
})($, jQuery, ko);
ko.applyBindings(new example.cities.ViewModel());
为了进行测试,我将脚本内联,但仍然不起作用。我错过了什么?
答案 0 :(得分:0)
最后我发现它,结果是AdGuard(安装在我的电脑上)阻止了来自localhost的cors请求,实际上是有意义的