Heim > Web-Frontend > js-Tutorial > Beispiel für die Übergabe von Array-Parametern durch Jquery Ajax an den Hintergrund

Beispiel für die Übergabe von Array-Parametern durch Jquery Ajax an den Hintergrund

高洛峰
Freigeben: 2017-01-09 14:28:21
Original
1193 Leute haben es durchsucht

Anforderungen:
Array-Parameter in JS in den Hintergrund übertragen

Analyse:
Arrays in JS sind schwach typisiert und können von jedem Typ (Objekt, Basistyp) sein, aber wenn in array Was eingefügt wird, ist der Objekttyp, der nur die Objektzeichenfolge anzeigt – [object Object]. request.getParameterValues()-Methode Was zurückgegeben wird, ist ein String[], daher sollte die toString()-Methode des Objekts während der Vordergrundübertragung aufgerufen werden. Was ist also, wenn Sie das Objekt trotzdem übergeben möchten? Salat!
Aber es kann mithilfe von JSON-Strings implementiert werden, und die JSON-Strings werden im Hintergrund in JAVA-Objekte analysiert.

Vielleicht möchten Sie sagen, was zu tun ist, wenn es sich um ein zusammengesetztes Objekt handelt, wie zum Beispiel das Folgende:

public class Person { 
private String username; 
private String password; 
private Address addr; 
}
Nach dem Login kopieren
Das Person-Objekt hat ein addr-Attribut vom Typ „Adresse“. Es ist ein Attribut, das letztendlich von jedem Objekt verwendet wird. Die Werte sind alle grundlegende Datentypen und müssen nur mit dem entsprechenden Verpackungstyp parseInt oder parseXXX analysiert werden.


Implementierung:
OK, das ist das Prinzip. Schauen wir uns zunächst an, wie man JS schreibt:

var as = []; 
var temp = []; 
for ( var int = 0; int < 5; int++) { 
temp.push(&#39;{"k":&#39;); 
temp.push(int); 
temp.push(&#39;,"v":&#39;); 
temp.push(int); 
temp.push(&#39;}&#39;); 
as.push(temp.join("")); 
} 
//Jquery中的方法,具体参考Jquery API 
$.post( 
"servlet/AjaxServlet?m=putWarningRule",{"aa":as} 
);
Nach dem Login kopieren
Die letzte Zeichenfolge ist der folgende Stil (nur als Beispiel)

{"k":0,"v":0}
Nach dem Login kopieren
Hintergrundempfang, es wird kein Framework besprochen, nur HttpServletRequest Aber

String[] jsonArr = request.getParameterValues("aa[]");
Nach dem Login kopieren
Zu beachten ist, dass bei der Übergabe von Parametern in js der Parametername „aa“ lautet, beim Empfang im Hintergrund jedoch „aa[]“. Jquery hätte die Konvertierung hier durchführen sollen, daher ist es am besten, sie in JS in „aa[]“ zu ändern. Der Grund, warum „[]“ hier nicht geschrieben wird, besteht darin, das Problem zu veranschaulichen. Sie können die folgende Methode verwenden, um alle Parameter in der Anfrage auszudrucken

Enumeration<String> names = request.getParameterNames(); 
while (names.hasMoreElements()) { 
String string = (String) names.nextElement(); 
System.out.println(string); 
}
Nach dem Login kopieren
OK. An diesem Punkt ist der Empfang abgeschlossen. Es bleibt nur noch, wie ein JSON-String in ein POJO umgewandelt wird. Ich verwende jsontools-core-1.7.jar. Ich lade es selbst aus der Codebibliothek herunter, importiere den Klassenpfad und schreibe eine einfache Tool-Klasse Methoden:

/** 
* 将对象转换为JSON格式的字符串 
* @param obj 
* @return 返回JSON字符串 
*/ 
public static String toJSONAsString(Object obj){ 
try { 
return JSONMapper.toJSON(obj).render(false); 
} catch (MapperException e) { 
e.printStackTrace(); 
} 
return null; 
} 

@SuppressWarnings("unchecked") 
public static <T> T jsonToObject(String jsonStr, Class<T> targetClass) throws TokenStreamException, RecognitionException, MapperException{ 
JSONValue jv = new JSONParser(new StringReader(jsonStr)).nextValue(); 
return (T) JSONMapper.toJava(jv,targetClass); 
} 

//test 
public static void main(String[] args) throws Exception { 
Person p = new Person(); 
p.setK("a"); 
p.setV("v"); 

String json = toJSONAsString(p); 
Person np = jsonToObject(json,Person.class); 
System.out.println(np.getK()+"=="+np.getV()); 
}
Nach dem Login kopieren
Nachdem die Anfrage den Wert erhalten hat, durchläuft sie das Array und konvertiert die

Person p = JSONUtils.jsonToObject(jsonArr[0], Person.class);
Nach dem Login kopieren
Person-Klasse wie folgt:

public class Person { 
private String k; 
private String v; 
public String getK() { 
return k; 
} 
public void setK(String k) { 
this.k = k; 
} 
public String getV() { 
return v; 
} 
public void setV(String v) { 
this.v = v; 
} 
}
Nach dem Login kopieren


Weitere JQuery-Ajax-Beispiele für die Übergabe von Array-Parametern an den Hintergrund und verwandte Artikel finden Sie auf der chinesischen PHP-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