2012-07-31 9 views
6

Sto per togliere i capelli rimanenti che ho, quindi per favore aiutatemi se sapete qual è il problema potrebbe essere ... Grazie. Anche le mie ricerche su google e su Google non sono state ripagate.jquery ajax con asp.net non funziona

Per prima cosa, sto utilizzando jquery-1.7.2.min.js e il modulo Web ASP.net 2.0.

Sto provando a effettuare una chiamata ajax utilizzando jquery ma continuo a ricevere errori di sintassi/errore di analisi. Ho provato molti modi diversi ma tutti hanno generato l'errore quando ho impostato il dataType su json.

Ecco quello che ho:

$.ajax({ 
    type: "POST", 
    url: "UserList.aspx/GetTestJson", 
    data: {}, //have also tried "{}" and other options such as removing the line 
    contentType: "application/json;charset=utf-8", 
    dataType: "json", 
    success: function(data, textStatus, jqXHR){ 
     alert('success'); 
    }, 
    //Using below instead of above makes no difference either 
    //success: function(data){ 
    // alert('success'); 
    //}, 
    error: function(jqXHR, textStatus, errorThrown){ 
     alert('errorThrown: ' + errorThrown); 
    } 
}); 

e il metodo pagina aspx:

[WebMethod] 
public static string GetTestJson() 
{ 
    return "Hello My World"; 
} 

Ho provato la creazione di un servizio web troppo, ma ottenere lo stesso risultato. Sembra che la risposta che ritorna sia l'html completo per la pagina o xml dal servizio Web e poiché ho impostato il dataType su json, non è riuscito a analizzarlo. Se questo è il caso, come si imposta la risposta per restituire solo json?

Ecco un'altra cosa che ho provato senza fortuna: i messaggi

[WebMethod] 
public static string GetTestJson() 
{ 
    HttpContext.Current.Response.ContentType = "application/json"; 
    string json = JavaScriptConvert.SerializeObject("Hello My World"); 
    return json; 
} 

errore che ottengo attraverso jQuery:

errorThrown.message = "Syntax error" 
errorThrown.number = -2146827286 
errorThrown.name = "SyntaxError" 
textStatus = "parseerror" 
jqXHR.status = 200 
jqXHR.statusText = "OK" 
jqXHR.readyState = 4 
jqXHR.responseText = (the complete html of the page) 

Tutte le idee o suggerimenti?

Grazie

+0

L'impostazione semplice dell'intestazione HTTP Content-type non modifica magicamente il contenuto della risposta. Devi convertire i dati in JSON tu stesso. Inoltre, [WebMethod] viene in genere utilizzato per i servizi SOAP, non per i servizi Web in stile RESTful. – Dai

+1

Ciò è parzialmente vero, i metodi di pagina vengono utilizzati specificamente negli scenari AJAX, impostano il tipo di risposta su JSON per impostazione predefinita – Jupaol

+0

Puoi pubblicare l'errore esatto che stai ricevendo – Jupaol

risposta

12

Grazie @DaveWard e @CodeRoller per il vostro aiuto che ha portato a questa soluzione:

  1. installare ASP.NET AJAX Extensions (HERE)
  2. Aggiungi riferimento System.Web. Extensions.dll
  3. Modifica web.config per includere lo ScriptModule httpModule (vedi sotto)

La mia chiamata jQuery ajax e il WebMethod sono sempre gli stessi del mio post originale.

mio web.config è stata modificata come di seguito:

<system.web> 
    <compilation debug="true"> 
     <assemblies> 
     <!-- A bunch of other assemblies here--> 
     <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add assembly="System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     </assemblies> 
    </compilation> 
    <httpModules> 
     <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
    </httpModules> 
    </system.web> 

spero che qualcun altro troverà questa utile.

+0

Il tuo post mi aiuta a inviare json alla mia applicazione web ASP.NET 2.0! Grazie! – Roman

+0

@PostureOfLearning Solo se potessi darti mille voti !! –

+3

@SurajSingh Sei il benvenuto. Sono contento che il post possa aiutare gli altri. Stavo impazzendo anche con questo problema ... =) – PostureOfLearning