【问题标题】:Ajax get jsonp gives error code 500 "request blocked" from MVC applicationAjax get jsonp 从 MVC 应用程序给出错误代码 500“请求被阻止”
【发布时间】: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());

jsfiddle

为了测试,我将脚本内联,但它仍然不起作用。我错过了什么?

【问题讨论】:

  • 你能检查一下,这是因为 CORS 吗?否则,您需要提供有关错误详细信息的更多信息,如果您收到 500。请检查您是否能够在服务器端捕获错误。
  • 服务不是我的服务,而是公共服务。我似乎无法让提琴手工作,有人知道我怎么能看到响应吗?它也没有进入错误块,所以我无法检查 errorThrown...

标签: javascript ajax asp.net-mvc jsonp


【解决方案1】:

我终于找到了,原来 AdGuard(安装在我的电脑上)阻止了来自 localhost 的 cors 请求,实际上是有道理的

【讨论】:

    猜你喜欢
    • 2015-06-08
    • 2017-01-16
    • 2023-03-25
    • 2015-05-05
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 2016-06-04
    • 2012-04-27
    相关资源
    最近更新 更多