Asmx-Webdienst gibt xml anstelle von json zurück und versucht, die Zeichenfolge xmlns="http://tempuri.org/" aus der Serviceausgabe zu entfernen

8

Ich habe für die letzten 3 Stunden nach 100 Links gesucht, zB scriptfactory in webconfig, 3 Fehler, Inhaltstyp usw. hinzugefügt.

Ich bin nicht in der Lage herauszufinden, was eigentlich der Fehler ist.

Umwelt: Dienst läuft auf .net 4.0 Webanwendung, die unter .net 4.0 ausgeführt wird

Anforderungen: Ich muss ein jqGrid mit asmx Web-Service binden, der mir einen json als Zeichenkette zurückbringt. Web-Service-Datei enthält folgenden Code.

%Vor%

Javascript ist wie folgt

%Vor%

HTML ist wie folgt

%Vor%

Web-Service-Ausgabe beim Klicken auf die Schaltfläche Aufrufen

%Vor%

Bitte schlagen Sie vor, was ich vermisse. <string xmlns="http://tempuri.org/"> Tags irritieren mich. Ich gehe davon aus, dass diese Tags mein Gitter nicht binden können.

UPDATE:

Der ASMX-Dienst sieht jetzt wie folgt aus:

%Vor%     
Shantanu Gupta 30.05.2012, 21:23
quelle

6 Antworten

6

Wenn Sie auf die Schaltfläche Aufrufen klicken, wird XML zurückgegeben, da in der Anfrage nicht contentType: 'application/json; charset=utf-8' angegeben ist. Also das Experiment mit dem Klicken auf Invoke Button hilft nicht wirklich.

Das Hauptproblem in Ihrem Code besteht darin, dass Sie die Daten innerhalb der Webmethode in eine Zeichenfolge konvertieren. Die Zeile

%Vor%

werden nicht benötigt. In der Regel wird das Objekt zurückgegeben. Das GetJsonServerProcess sollte in etwas wie

geändert werden %Vor%

Das nächste Problem ist, dass das Standardeingabeformat, das jqGrid wartet, ein anderes ist (siehe hier ). Also höhlen Sie aus, um jsonReader anzugeben, die das Datenformat beschreiben. In Ihrem Fall wird es so etwas wie

sein %Vor%

Außerdem sollten Sie niemals das Präfix http://localhost:1092/ in Ajax url verwenden, da Sie aus Sicherheitsgründen nur Daten von derselben Site abrufen können. Der Parameter data in jqGrid hat eine andere Bedeutung als in jQuery. Daher sollten Sie data: "{}" entfernen und type: "POST" von ajaxGridOptions in mtype: "POST" verschieben. Als Ergebnis haben Sie etwas wie

%Vor%

Ich habe den Code nicht getestet, aber er sollte näher an dem sein, was Sie brauchen.

AKTUALISIERT : Sie sollten den Code korrigieren, indem Sie jsonReader ändern. Sie können die Arbeitsdemo hier herunterladen. Es zeigt das Gitter an

Ich habe auf der Serverseite den Code verwendet

%Vor%

und auf der Clientseite

%Vor%     
Oleg 30.05.2012, 22:01
quelle
1

Okay, ich habe den gleichen Fehler und nach einer Menge von Versuch und Irrtum ist hier meine "schnelle und schmutzige" Lösung;

%Vor%     
pythonian29033 13.08.2013 10:08
quelle
0
%Vor%     
Mohamed.Abdo 17.05.2015 10:19
quelle
-1

Für gültige JSON-Antwort verwenden Sie diesen Code ..

%Vor%     
user1907606 18.07.2015 10:55
quelle
-1

Der folgende Code sollte den Trick machen:

%Vor%     
PrashantVatsa 01.07.2016 13:58
quelle
-1

Dieser Code funktioniert perfekt

%Vor%     
Darshan 21.06.2017 07:16
quelle

Tags und Links