2013-01-31 13 views
5

So che è possibile inviare una richiesta AJAX a una pagina . E so anche che una pagina .asmx gestisce una richiesta AJAX tramite un metodo web.Invia richiesta AJAX alla pagina .aspx e restituisci JSON

È anche possibile inviare una richiesta AJAX a una pagina .aspx? In tal caso, una pagina .aspx gestisce anche una richiesta AJAX tramite un metodo web? Si noti che vorrei restituire una risposta JSON dalla pagina .aspx. È possibile?

+0

questo è un collegamento che può aiutarti http://blog.devarchive.net/2007/12/calling-page-methods-from-javascript.html –

risposta

8

È possibile definire metodi web nel code-behind della pagina .aspx e poi li chiamano:

[WebMethod] 
public static string doSomething(int id) 
{ 
    ... 
    return "hello"; 
} 

E poi, di chiamare un metodo web nel tuo codice jQuery:

$.ajax({ 
    type: "POST", 
    url: "YourPage.aspx/doSomething", 
    data: "{'id':'1'}", 
    dataType: "json", 
    contentType: "application/json; charset=utf-8", 
    success: function (data) { 
     var returnedstring = data.d; 
     var jsondata = $.parseJSON(data.d);//if you want your data in json 
    } 
}); 

Here è un buon collegamento per iniziare.

2

se ho capito correttamente la domanda, Aspx è uguale all'HTML. Sarà reso come HTML. ma solo la differenza è lato server e controlli che mantengono gli stati con meccanismo di stato.

in modo da poter eseguire la funzione jquery $.ajax().

$.ajax({ 
    url: UrlToGetData, 
    dataType:'json', 
    success:function(data){ 
      //do some thing with data. 
      } 
}); 

o se si vuole scrivere il valore JSON per la risposta, quindi utilizzare Response.ContentType primo utilizzo qualsiasi serializzatore Javascript (JSON.NET), quindi impostare le contentType come questo.

Response.ContentType="application/json"; 
1
$.ajax({ 
      url: "(aspx page name/method to be called from the aspx.cs page)", 
      type: "POST", 
      dataType: "json", 
      data: $.toJSON(jsonData), 
      contentType: "application/json; charset=utf-8", 
      success: function (data, textStatus, jqXHR) { 
       //TO DO after success 
     } 
}); 

Prova il codice di cui sopra