2016-03-30 1 views
0

Ich schreibe eine MVC-Anwendung und ich muss auf einige Dienste über Jsonp mit einem Ajax-Aufruf zugreifen.Ajax get jsonp gibt Fehlercode 500 "Anfrage blockiert" von MVC-Anwendung

Wenn ich jedoch meinen Code in Visual Studio (IIS Express) ausführen, bekomme ich immer einen Statuscode 500 "Anfrage blockiert" zurück, leider sieht Fiddler diese Anfrage nicht, so dass ich keine weiteren Informationen über den Fehler habe , funktioniert nur die Registerkarte "Netzwerk" in den Entwicklerwerkzeugen von IE/chrome.

Wenn ich die Anfrage, in der Netzwerk-Registerkarte Ich sehe die 500, kopiere ich die Anfrage URL, fügen Sie es in meinem Browser, voila, es funktioniert, bekomme ich eine Antwort.

Jetzt habe ich eine JSFiddle geschaffen, die fast genau der gleiche wie der Code sieht Ich verwende (nur anstelle von Inline-Scripts, ich habe es in separaten Dateien), Überraschung, die JSFiddle funktioniert:

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

Zum Testen legte ich die Skripte inline und trotzdem funktioniert es nicht. Was vermisse ich?

+0

Können Sie überprüfen, weil der CORS ist das? sonst müssen Sie mehr über Fehlerdetails zur Verfügung stellen, wenn Sie 500 erhalten. überprüfen Sie, ob Sie in der Lage sind, Fehler in der Serverseite aufzufangen. – niku

+0

Der Dienst ist nicht mein Dienst, sondern ein öffentlicher Dienst. Ich kann nicht scheinen, Geiger zur Arbeit zu bringen, weiß jemand, wie ich die Antwort sehen kann? Es geht auch nicht in den Fehlerblock, also kann ich den errorThrown nicht überprüfen ... –

Antwort

0

schließlich fand ich es, stellt sich heraus, AdGuard (installiert auf meinem PC) blockiert cors Anfragen von localhost, macht Sinn

tatsächlich