【发布时间】:2016-03-31 03:42:38
【问题描述】:
我正在编写一个 MVC 应用程序,我需要使用 ajax 调用通过 jsonp 访问一些服务。
但是,当我在 Visual Studio (IIS Express) 中运行我的代码时,我总是返回状态代码 500“请求被阻止”,不幸的是提琴手没有看到该请求,所以我没有关于该错误的更多信息,只有 IE/chrome 的开发者工具中的网络标签有效。
当我发出请求时,在网络选项卡中我看到了 500,我复制了请求 url,将其粘贴到我的浏览器中,等等,它工作正常,我得到了响应。
现在我创建了一个 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());
为了测试,我将脚本内联,但它仍然不起作用。我错过了什么?
【问题讨论】:
-
你能检查一下,这是因为 CORS 吗?否则,您需要提供有关错误详细信息的更多信息,如果您收到 500。请检查您是否能够在服务器端捕获错误。
-
服务不是我的服务,而是公共服务。我似乎无法让提琴手工作,有人知道我怎么能看到响应吗?它也没有进入错误块,所以我无法检查 errorThrown...
标签: javascript ajax asp.net-mvc jsonp