Ich arbeite an einer grundlegenden ASP.NET & AJAX/JSON-Zuordnung und ich bin frustriert mit der Arbeit. Eine der Anforderungen bestand darin, eine AJAX/JSON-Methode zu erstellen, um einige Manipulationen an SQL DB-Daten vorzunehmen.Warum schlägt die AJAX JSON-Antwort trotz 200 OK-Status fehl?
Um das zu vervollständigen, habe ich den folgenden Code:
Im aspx:
$.ajax({
type: "GET",
dataType: "json",
url: "Retrieve",
success: function (data) {
alert(data);
var col;
for (col in data) {
alert(col);
addRow(data[col].id, data[col].Name, data[col].catagory, data[col].difficulty, data[col].company, data[col].price, '#products');
}
},
error: function() {
alert("1");
}
In "retrieve.aspx" Seite (der Teil des Codes, der die Daten für JSON erstellt):
Response.ContentType = "application/json; charset=utf-8";
bool val1 = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated;
string category = Request.QueryString["category"];
//string a = JsonConvert.SerializeObject(getProducts(category));
var a = getProducts(category);
// instantiate a serializer
JavaScriptSerializer TheSerializer = new JavaScriptSerializer();
var TheJson = TheSerializer.Serialize(a);
Response.Write(TheJson);
Und last but not least, wenn ich versuche, den Datentyp zu ändern, es wird in Text, zeigen, dass der Inhalt der JSON-strukturierten Text zusammen mit einer HTML-Seite Code.
Was fehlt mir hier?
'Response.End' ist in der Regel eine schlechte Problemumgehung für ein Problem, das auf eine andere Art und Weise behoben werden kann. Die Anfrage wird beendet, indem intern ein Thread-Abbruch durchgeführt wird. Sogar [die Dokumentation] (https://msdn.microsoft.com/en-us/library/system.web.httpresponse.end (v = vs.110) .aspx) sagt: _ "Diese Methode wird nur aus Gründen der Kompatibilität bereitgestellt mit ASP "_ –
@JamesThorpe, in der Tat, danke für das Aufzeigen. Erforschte ein wenig und lernte viel, aktualisierte Antwort mit einer besseren Option – Andrei
Deshalb liebe ich SO - jeder kann lernen :) –