Heim > Web-Frontend > js-Tutorial > Hauptteil

Das Problem der Übergabe von Array-Parametern durch Ajax-Aufruf von Webservices in jQuery (grafisches Tutorial)

亚连
Freigeben: 2018-05-22 11:54:38
Original
1977 Leute haben es durchsucht

Dieser Artikel gibt Ihnen eine detaillierte Einführung in jQuery über Ajax, um einen Webservice aufzurufen, um Array-Parameter anhand von Beispielen zu übergeben. Freunde in Not können sich darauf beziehen

Die folgenden Beispiele werden intuitiver und für jeden einfacher verstehen.

In meinem Projekt rufe ich Webservice über jquery.ajax auf.

Der Clientcode lautet wie folgt:

$.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");
}
});
Nach dem Login kopieren

Der Servercode lautet wie folgt:

[WebMethod]
public XmlDocument xxx(string name, string [] tags )
{ 
return sth; 
}
Nach dem Login kopieren

wirft immer eine Ausnahme.

Das Problem tritt hier auf:

Hier sind die HTTP-Daten:

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
Nach dem Login kopieren

Und die Das erwartete Format lautet wie folgt:

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
Nach dem Login kopieren

Vergleicht man die Fettschrift oben, sollten die Daten im Beitrag mit Ausnahme des Problems wie folgt lauten:

name=zhangsan&tags=aa&tags=bb&tags=cc
Nach dem Login kopieren

Es scheint, dass das Problem vorliegt Liegt in jquery.ajax. Siehe den 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't currently deserialize
// nested arrays properly, and attempting to do so may cause
// a server error. Possible fixes are to modify rack'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);
}
}
Nach dem Login kopieren

Das Obige habe ich für alle zusammengestellt. Ich hoffe, dass es in Zukunft für alle hilfreich sein wird.

Verwandte Artikel:

Ausführliche Erklärung, wie man Ajax verwendet, um Arrays zu übergeben und im Hintergrund zu empfangen

Der AJAX-Paging-Effekt ist einfach zu implementieren (grafisches Tutorial)

So lösen Sie das Problem der Ajax-Übergabe von Daten mit Sonderzeichen

Das obige ist der detaillierte Inhalt vonDas Problem der Übergabe von Array-Parametern durch Ajax-Aufruf von Webservices in jQuery (grafisches Tutorial). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!