html
fill in names and check it out
Enter First Name
Enter Last Name
[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.
=
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" + "'}",