/ / Verbrauchen Sie JSON-Daten (asmx) über die C # -Seite - c #, jquery, asp.net, json, .net-3.5

Verbrauchen Sie JSON-Daten (asmx) über die C # -Seite - c #, jquery, asp.net, json, .net-3.5

Ich habe einen ähnlichen Code:

[ScriptService]
public class Titles : WebService
{
List<Title> Title = new List<Title>();

SqlConnection connection;
SqlCommand command;
SqlDataReader reader;

[WebMethod()]
public List<Title> GetTitle()
{
var title = new List<Title>();

using (connection = new SqlConnection(ConfigurationManager.AppSettings["connString"]))
{
using (command = new SqlCommand("some query here", connection))
{
connection.Open();

using (reader = command.ExecuteReader())
{
int col1Index = reader.GetOrdinal("col1");

while (reader.Read())
{
title.Add(new Title(reader.GetString(col1Index)));
}
}
}
}

return title;
}
}

Ich kann dann jQuery verwenden, um mit dem obigen Code XML oder JSON zurückzugeben, z.

$.ajax({
url: "/webservices/titles.asmx/GetTitle",
contentType: "application/json; charset=utf-8",
dataType: "json",

Durch die Änderung von jQuery dataType und contentType in XML gibt der obige Webservice XML statt JSON zurück.

Meine Frage ist, kann ich den oben genannten Webservice verwendenin einer Standard-C # asp.net-Seite, damit ich die Werte extrahieren und die Werte verwenden kann, wie ich möchte, d. h.

Antworten:

0 für die Antwort № 1

ASMX gibt standardmäßig SOAP (XML) zurück. Es ist egal, was Sie verlangen, es wird nicht zurückgegeben.

In der ASP.NET-Welt haben Sie eine breitere Toolbox. Wenn Sie JSON (und XML?) Möchten, können Sie die Web-API verwenden, um die Daten zurückzugeben. Standardmäßig ist es JSON, das hier funktionieren sollte. Es gibt auch etwas Magie in den ASP.NET-Internals, dass eine Methode Daten zurückgibt. Die Kernmethode in Webformularen ist AJAX. Sie können jedoch auch JQuery verwenden, wenn Sie es besser mögen. Es ist alles im Verständnis, wie dat zurückgegeben wird.

Mit ASMX geben Sie jedoch XML in der Form von zurückSEIFE. Ich habe gesehen, wie jemand (vor Jahren) die Interna ein wenig in Webservices übernommen und JSON zurückgegeben hat. Es war ein großer Schlag. Es hat funktioniert, aber ich würde dies nicht empfehlen, wenn es verschiedene Wege gibt, um es zu lösen, ohne die Interna von ASP.NET zu belasten.

Ich würde hier anfangen: http://encosia.com/using-jquery-to-consume-aspnet-json-web-services/

Es ist eine einfache Erklärung, wie JSON mit JQuery in ASP.NET verwendet wird.


0 für die Antwort № 2

Auf der Serverseite können Sie Folgendes tun

var results = (new Titles()).GetTitle();
// do stuff with results.

Beachten Sie jedoch, dass dies wirklich nicht der Zweck von Web-Services ist.

In einer ASPX-Datei möchte dies:

<%  var results = (new Titles()).GetTitle();
foreach(var r in results){%>
<div><!-- do stuff with each item in results --></div>
<% }%>

0 für die Antwort № 3

Sie können einen Webservice sicher über eine.aspx page - die einfachste Möglichkeit, dies zu erreichen, ist die Verwendung des WebClient-Objekts im System.Net-Namespace über folgenden Code:

        WebClient serviceRequest = new WebClient();
string responseStr = "";
responseStr = serviceRequest.DownloadString(new Uri("http://www.yourwebserver.com/yourwebservices/YourService.svc/json/getwhateverdatayouneed/" + passInAParameter));
//I"m not really sure if these next 3 lines are needed, but to deserialize into a Data Table I had to do this string manipulation
responseStr = responseStr.Replace("\", "");
responseStr = responseStr.Replace(""[", "[");
responseStr = responseStr.Replace("]"", "]");
DataTable dtMyDataFromService = JsonConvert.DeserializeObject<DataTable>(responseStr);

In diesem Beispiel wird auch die Newtonsoft.Json-DLL verwendet, die Sie herunterladen können Nuget - Dies ist wahrscheinlich die beliebteste Bibliothek fürSerialisierung und De-Serialisierung von Json in .NET. Angenommen, Ihr Web-Service gibt einen STRING zurück (Sie möchten in .NET-basierten Web-Services wirklich keine nativen .NET-Datentypen verwenden), deserialisiert das obige Codebeispiel die Ergebnisse in einer .NET-Datentabelle auf Ihrer ASPX-Seite. Einmal Sie machen das, je nach Ihrer Frage, durchlaufen Sie einfach die Datentabelle und Response.Write auf dem Bildschirm (Sie können auch den rohen Json durch Response.Write (responseStr) schreiben).

Hoffe das hilft! - JM