ASP.NET Webservice – jQuery

written by devangelist on Juli 26, 2012 in ASP.NET and Javascript and jQuery and JSON with no comments

Der Trend der singlepage-Applications schreitet ganz klar voran. Der erste Schritt dafür ist das neuladen der Seite zu reduzieren und – mithilfe von jQuery – nichts einfacher als das.

GET und POST

Ein Problem von GET-Requests mit Javascript/jQuery ist die Sicherheit, da GET-Requests von überall gemacht werden können. Man spricht dabei über XSS (Cross-site-scripting). Mit POST-Requests hingegen gibt es dieses Problem in dem Form nicht, da nur Abfragen von der selben Domain gemacht werden können, somit sollte im Zweifelsfall immer ein POST verwendet werden.

POST-Request in jQuery:

$.ajax({
    type        : "POST",
    url         : "Webservice.asmx/HelloWorld",
    data        : "",
    contentType : "application/json; charset=utf-8",
    dataType    : "json",
    success     : function(result) {
        // ...
    }
}
[WebMethod()]
public string HelloWorld()
{
    return "Hello world!";
}

Das übliche Hello-World Beispiel zeigt die Rückgabe von einfachen Datentypen, was nur selten der Fall ist.
Interessant wird es mit komplexen Datentypen, wie Objekte oder generische Listen.

[WebMethod()]
public IList<Customer> GetCustomers()
{
    var list = new List<Customer>();
    list.Add(new Customer());
    // ...

    return list;
}
...
success : function(result) {
    $.each(result.d, function(key, customer) {
        $("#container").append("<p>" + customer.name + "</p>");
    });
}

Der umgekehrte Weg, also das übergeben von Daten an den Webservice funktioniert gleich:

var customer = { Name: 'Max' };

$.ajax({
    ...
    url  : "Webservice.asmx/SetCustomer",
    data : '{"customer":' + JSON.stringify(customer) + '}',,
}

Die Klasse Customer muss auf dem Server existieren damit der Webservice die übergebenen Daten deserialisieren kann.

public class Customer
{
    string Name { get; set; }
}

[WebMethod()]
public bool SetCustomer(Customer customer)
{
    // ...
}

Eigentlich ganz einfach, oder?

ASP.NET Webservice – jQuery: 1 Stern2 Sterne3 Sterne4 Sterne5 Sterne 4,50 von 5 Punkte, 2 abgegebene Stimmen.
Loading ... Loading ...

About the Author

Roberto Bez ist passionierter Webentwickler und TechLead bei der HolidayCheck AG. Für Roberto bedeutet das Entwickeln nicht nur Arbeit, sondern auch Freude, Motivation und täglich neue, aufregende Herausforderungen. Besonders gerne setzt er sich mit neuen Webtechnologien sowie Datenbanken aller Art auseinander und versucht diese in die tägliche Anwendungsentwicklung miteinzubringen. Neben dem Entwickeln trifft man ihn gerne Abends beim Laufen oder im Sommer bei Mountainbike-Touren durch die schönen Berge Südtirols.