2010-08-11 8 views
0

Je commence tout juste à utiliser la librairie JQuery alors ne me quittez pas si quelque chose me manque. J'ai un webserivce avec deux méthodes d'essai ...JQuery Ajax 500 Erreur interne

[WebService(Namespace = "http://localhost/WebServices")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
[System.Web.Script.Services.ScriptService] 
public class SystemServices : BaseWebService 
{ 
    [WebMethod(EnableSession = true)] 
    public string GetDate() 
    { 
     return DateTime.Today.ToShortDateString(); 
    } 
    [WebMethod(EnableSession = true)] 
    public string PerformPISearch(string firstName, string lastName) 
    { 
     return firstName + lastName; 
    } 

Je peux utiliser la méthode demande d'utilisation du GetDate .ajax $ qui ne dispose pas de paramètres sans problème, mais je reçois le 500 Internal Server Error renvoyé par jQuery lorsque j'essaie d'exécuter la méthode PerformPISearch (le constructeur du service web ne se fait jamais toucher) ... Donc, je suppose que je fais quelque chose de mal avec la façon dont j'essaie de passer les paramètres à la méthode, mais je peux t comprendre ce que ...

 function PerformSearch() { 
    var strFirstName = (txtFirstName.GetValue() == null ? "" : txtFirstName.GetValue()); 
    var strLastName = (txtLastName.GetValue() == null ? "" : txtLastName.GetValue()); 
    var webserviceURL = '<%= WebServiceURL %>' 

    $.ajax({ 
     type: "POST", 
     url: webserviceURL + "SystemServices.asmx/PerformPISearch", //Can change to use GetDate and it works. 
     data: ({firstName: strFirstName, lastName: strLastName}), //thinking the problem is here 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(msg) { 
      AjaxSucceeded(msg); 
     }, 
     error: AjaxFailed 
    }); 
} 

function AjaxSucceeded(result) { 
    alert(result.d); 
} 
function AjaxFailed(result) { 
    alert(result.status + ' ' + result.statusText); 
} 

Répondre

3

Avez-vous essayé d'enlever le "()":

data: {firstName: strFirstName, lastName: strLastName} 

ou de mettre tout en une chaîne:

data: "{'firstName': '" +strFirstName + "', 'lastName': '" +strLastName+ "'}" 
+0

données: "{ 'prenom': '" + strFirstName + " ' 'lastName':'" + strLastName + "'}" nous avons un gagnant, merci ... – AGoodDisplayName

+0

Avez-vous essayé $ .post? Je l'utilise avec asp.net mvc, peut réduire le code si cela fonctionne :) .post $ (webserviceURL + "SystemServices.asmx/PerformPISearch", { prenom: strFirstName, lastName: strLastName }, la fonction (résultat) { \t // fais quelque chose }) – mathieu

+0

Non je ne l'ai pas mais je vais y jeter un coup d'oeil. Merci encore. – AGoodDisplayName