Volanie webových služieb C# z JavaScriptu a ich používanie (formát JSON)


Vytvoril som C# webovú službu a snažím sa ju zavolať a použiť z JavaScriptového skriptu, aký je spôsob alebo najlepší spôsob, ako to urobiť, vopred ďakujem. Vysvetlím viac: toto je webová služba:

 public class DocumentInfo : System.Web.Services.WebService
{

    [WebMethod(EnableSession = true)]
    [ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
    public string GetDocumentInfo(string id)
    {
        Document document = new Document(Int32.Parse(id));    
        string output = JsonConvert.SerializeObject(document);
        return output;
    }
}

Otestoval som to, funguje to, keď som vyskúšal navrhované AJAX riešenia, dostal som túto chybu 500 Internal Server Error.

Odpoveď č. 1

Prečítajte si niektoré z tutoriálov

http://encosia.com/using-jquery-to-consume-aspnet-json-web-services/ http://weblogs.asp.net/jalpeshpvadgama/archive/2010/08/29/calling-an-asp-net-web-service-from-jquery.aspx

function TestService() 
{              
    try 
      {

       $.ajax({
         type: "POST",
         url: "http://webserviceURL.asmx/YourWebMethodName",
         data: "{'abc':'" + 123 + "'}", // if ur method take parameters
         contentType: "application/json; charset=utf-8",
         success: SuccessTestService,
         dataType: "json",
         failure: ajaxCallFailed
      });
    }
    catch (e)
    {
        alert('failed to call web service. Error: ' + e);
    }
}

function SuccessTestService(responce) {
    alert(eval(responce.d));
}


function ajaxCallFailed(error) {
        alert('error: ' + error);

    }

Odpoveď č. 2

Musíte urobiť AJAX požiadavku a počkať na spätné volanie, aby ste dostali údaje.

Veľmi jednoduchý príklad použitia jQuery:

$.ajax({
  url: "/my_service.cs"
}).done(function(data) { 
  console.log("Received: ", data);
});