Maison > interface Web > js tutoriel > le corps du texte

Le problème de la transmission des paramètres de tableau via un service Web d'appel ajax dans jQuery (tutoriel graphique)

亚连
Libérer: 2018-05-22 11:54:38
original
2006 Les gens l'ont consulté

Cet article vous donnera une introduction détaillée à jQuery via ajax pour appeler un service Web pour transmettre les paramètres du tableau à travers des exemples.

Les exemples suivants seront plus intuitifs et plus faciles à comprendre pour tout le monde. comprendre.

Dans mon projet, j'appelle le webservice via jquery.ajax.

Le code client est le suivant :

$.ajax({
url: "test/xxx.asmx",
type: 'POST',
dataType: 'xml',
timeout: ,
data: { name: "zhangsan", tags: ["aa", "bb", "cc"] },
error: function(xml) {
alert(xml.responseText);
},
success: function(xml) {
alert("OK");
}
});
Copier après la connexion

Le le code du serveur est le suivant :

[WebMethod]
public XmlDocument xxx(string name, string [] tags )
{ 
return sth; 
}
Copier après la connexion

lève toujours une exception.

Le problème se produit ici :

Ce qui suit sont les données HTTP :

POST http://xxx.com/xxx.asmx/xxx HTTP/1.1
Host: center.cmis.htpc.com.cn
Connection: keep-alive
Content-Length: 55
Cache-Control: max-age=0
Origin: http://xxx.com
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept: application/xml, text/xml, */*; q=0.01
Referer: http://xxx.com/xxx.aspx
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
name=zhangsan&tags%5B%5D=aa&tags%5B%5D=bb&tags%5B%5D=cc
Copier après la connexion

Et le format attendu est le suivant :

POST /xxx.asmx/xxx HTTP/1.1
Host: xxx.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
name=string&tags=string&tags=string
Copier après la connexion

Comparez la police en gras ci-dessus, les données de publication sauf le problème. La bonne devrait être la suivante :

<🎜. >
name=zhangsan&tags=aa&tags=bb&tags=cc
Copier après la connexion
Il semble que le problème réside dans jquery. Voir le code (jquery.1.8.3.js)

function buildParams(prefix, obj, traditional, add) {
var name;
if (jQuery.isArray(obj)) { 
// Serialize array item.
jQuery.each(obj, function(i, v) {
if (traditional || rbracket.test(prefix)) { 
// Treat each array item as a scalar.
add(prefix, v);
} else {
// If array item is non-scalar (array or object), encode its
// numeric index to resolve deserialization ambiguity issues.
// Note that rack (as of ..) can&#39;t currently deserialize
// nested arrays properly, and attempting to do so may cause
// a server error. Possible fixes are to modify rack&#39;s
// deserialization algorithm or to provide an option or flag
// to force array serialization to be shallow.
//ytx 
buildParams(prefix, v, traditional, add);
//buildParams(prefix + "[" + (typeof v === "object" ? i : "") + "]", v, traditional, add);
}
});
} else if (!traditional && jQuery.type(obj) === "object") {
// Serialize object item.
for (name in obj) {
buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
}
} else {
// Serialize scalar item.
add(prefix, obj);
}
}
Copier après la connexion
Ce qui précède est ce que j'ai compilé pour tout le monde, je l'espère. sera utile à tout le monde à l’avenir.

Articles connexes :

Explication détaillée de la façon d'utiliser ajax pour transmettre des tableaux et recevoir en arrière-plan

Implémentation simple de la pagination AJAX effet (tutoriel graphique)

Comment résoudre le problème de transmission de données Ajax avec des caractères spéciaux

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!