2012-01-12 1 views
0

J'essaie d'appeler une méthode de service Web à partir d'un appel Jquery Ajax. La méthode accepte 3 paramètres du front-end et recherche l'enregistrement dans le DB.Comment passer un paramètre (email ID) à une fonction C# à partir de l'appel Jquery Ajax?

Je ne suis pas en mesure de concaténer les paramètres 3 correctement dans l'appel Ajax:

La méthode Web est:

public bool FindRecord(string Fname, string Lname, string Email) 
{ 
    string SQL = "SELECT * FROM contactsSource WHERE (first_name ='" + Fname + "') AND (last_name = '" + Lname + "') AND (email_address_work = '" + Email +"')"; 
    OleDbDataReader reader = DataAccess.GetData(SQL); 
    if (reader.HasRows) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

et l'appel Ajax, je suis en train est:

<script type="text/javascript"> 
     $(document).ready(function() { 
      $('#btnDownload').click(function() { 
       var Fname = $('#Fname').val(); 
       var Lname = $('#Lname').val(); 
       var email = $('#Email').val(); 

       $.ajax({ 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        data: '{"Fname":"' + Fname + '", "Lname":"' + Lname + '", "Email":' + email + '}', 
        url: "WebService.asmx/FindRecord", 
        dataType: "json", 
        success: function(result) { 
         alert(result.d); 
        }, 
        error: function(result) { 
         alert("Due to unexpected errors we were unable to load data"); 
        } 
       }); 
       //$('.secondary').show(500); 
      }); 
     });  

    </script> 

Mais je continue à obtenir 500 erreur interne de serveur:

{"Message":"Invalid JSON primitive: (Email ID that I am passing).","StackTrace":" at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject() 

Répondre

1

Votre paramètre email doit être entre guillemets, sinon il ne sera pas analysé correctement en tant que valeur de chaîne JSON. La syntaxe corrigée doit être:

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    data: '{"Fname":"' + Fname + '", "Lname":"' + Lname + '", "Email":"' + email + '"}', 
    url: "WebService.asmx/FindRecord", 
    dataType: "json", 
    success: function(result) { 
     alert(result.d); 
    }, 
    error: function(result) { 
     alert("Due to unexpected errors we were unable to load data"); 
    } 
}); 
+0

Grande Observation @Prutswonder, ça a marché :) Merci beaucoup, ceci est ma première expérience avec Jquery et Ajax – Vishal

+0

@Vishal Soyez sûr de lire les autres réponses, vous le faites à la dure. Rappelez-vous, JSON est * Javascript * Notation d'objet. –

+0

@Chris Certainement, j'essaierai aussi le chemin alternatif, en fait le genre de ma première affectation sur Jquery et Ajax. Merci BTW. – Vishal

1

Vous construisez votre objet data incorrect. Pour ce faire, à la place:

data: {Fname: Fname, Lname: Lname, Email: Email } 
+0

Oui, c'est aussi une meilleure façon de le faire, merci pour votre aide – Vishal

1

Pas besoin de citations ..

Essayez:

  $.ajax({ 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       data: {Fname: Fname, Lname: Lname, Email: email}, 
       url: "WebService.asmx/FindRecord", 
       dataType: "json", 
       success: function(result) { 
        alert(result.d); 
       }, 
       error: function(result) { 
        alert("Due to unexpected errors we were unable to load data"); 
       } 
      }); 
Questions connexes