passage de plusieurs parameters à .asmx à partir de jquery ajax GET

html

fill in names and check it out 

Enter First Name


Enter Last Name

c #

 [WebMethod(EnableSession = true)] [ScriptMethod(UseHttpGet = true)] public ssortingng testGetParametersDynamic(ssortingng firstName, ssortingng lastName) { ssortingng fullName = firstName + lastName; return fullName; } 

J’ai essayé plusieurs façons d’entrer des données bc Je pense que c’est là que réside le problème

tentative 1

 function testGetParametersDynamic2() { $.ajax( { post: 'GET', contentType: 'application/json; charset=utf-8', dataType: 'json', data: '{"firstName":"' + $('#myFirstName').val() + '","lastName":' + $('#myLastName').val() + '"}', url: 'UtilitieService.asmx/TestGetParametersDynamic', success: function (result) { var test = result.d; var outputDiv = $('outputGET3'); outputDiv.html(test); }, error: function () { alert('Fail Test Get Dynamic'); } }); } 

tentative 2:

 function testGetParametersDynamic2() { $.ajax( { post: 'GET', contentType: 'application/json; charset=utf-8', dataType: 'json', data: "firstName" + $('myFirstName').val() + "&lastName" + $('myLastName').val(), url: 'UtilitieService.asmx/TestGetParametersDynamic', success: function (result) { var test = result.d; var outputDiv = $('outputGET3'); outputDiv.html(test); }, error: function () { alert('Fail Test Get Dynamic'); } }); } 

les deux fois, j’obtiens cette erreur:

Appel de service Web non valide, valeur manquante pour le paramètre: \ u0027firstName \ u0027

J’espère que vous utilisez l’atsortingbut [ScriptMethod(ResponseFormat=ResponseFormat.Json)] pour la méthode Web ou définissez la même information dans le fichier web.config dans le cas de l’utilisation .NET 4.0.

Il me semble que votre première tentative était presque correcte, mais vous devriez remplacer

 data: '{"firstName":"' + $('#myFirstName').val() + '","lastName":' + $('#myLastName').val() + '"}', 

au

 data: '{"firstName":"' + $('#myFirstName').val() + '","lastName":"' + $('#myLastName').val() + '"}', 

(la double citation de départ a été ignorée avant le $('#myLastName').val() ).

Je vous recommande ssortingctement de ne pas utiliser la sérialisation manuelle en JSON. Par exemple, si le texte de $('#myFirstName').val() ou $('#myLastName').val() aura des caractères ” ” ou ‘\’, les caractères doivent être précédés d’une barre oblique inverse ( ‘\’) (voir ici ). Au lieu de la sérialisation manuelle, vous devez utiliser la fonction JSON.ssortingngify du script json2.js que vous pouvez télécharger à partir du site http://www.json.org/js.html ou ici . navigateurs Web, les fonctions sont implémentées de manière native et json2.js utilise cette implémentation si elle est effectuée

Le paramètre data de $.ajax pourrait être réécrit comme suit:

 data: { firstName: JSON.ssortingngify($('myFirstName').val()), lastName: JSON.ssortingngify($('myLastName').val()) } 

ou dans certaines situations, même

 data: { firstName: function() { return JSON.ssortingngify($('myFirstName').val()); }, lastName: function() { return JSON.ssortingngify($('myLastName').val()); } } 

Pour plus d’informations, voir cette ancienne réponse et probablement aussi ceci .

MISE À JOUR : Désolé, la version correcte sans l’utilisation de JSON.ssortingngify pourrait être sans l’utilisation de données:

 url: 'UtilitieService.asmx/TestGetParametersDynamic?firstName=' + encodeURIComponent('"' + $('#myFirstName').val() + '"') + '&lastName=' + encodeURIComponent('"' + $('#myLastName').val() + '"') 

Je vous recommande ssortingctement de n’utiliser que la version JSON.ssortingngify que j’ai décrite ci-dessus.

  • Votre première tentative consiste à transmettre les parameters à une chaîne json.
  • Votre deuxième tentative est manquante = signes.

Vous pouvez transmettre un object aux data et jQuery le sérialisera correctement.

 $.ajax( { post: 'GET', data: { firstName: $('myFirstName').val(), lastName: $('myLastName').val() }, ... 

Passer plusieurs parameters en utilisant json

 data: "{'RecomendeeName':'" + document.getElementById('txtSearch').value + "'," + "'tempdata':'" +"myvalue" + "'}",