Les tableaux en JS sont faiblement typés et peuvent contenir n'importe quel type (objet, type de base). Cependant, si le tableau contient un type d'objet, seuls les objets seront affichés lorsqu'ils seront passés en arrière-plan String --[object Object], la raison est la suivante :
Lors de la réception en arrière-plan, vous ne pouvez utiliser que request pour recevoir. La méthode request.getParameterValues() renvoie une String[], donc, il devrait être que la méthode toString() de l'objet soit appelée lors de la transmission au premier plan, et si vous souhaitez toujours transmettre l'objet ? Mais il peut être implémenté à l'aide de chaînes JSON, et les chaînes JSON sont analysées en objets JAVA en arrière-plan.Peut-être souhaitez-vous dire quoi faire s'il s'agit d'un objet composite, comme ce qui suit :
public class Person { private String username; private String password; private Address addr; }
qui doit uniquement être analysée à l'aide du type d'emballage correspondant parseInt ou parseXXX.
Mise en œuvre : OK, c'est le principe. Voyons d'abord comment écrire du JS :
var as = []; var temp = []; for ( var int = 0; int < 5; int++) { temp.push('{"k":'); temp.push(int); temp.push(',"v":'); temp.push(int); temp.push('}'); as.push(temp.join("")); } //Jquery中的方法,具体参考Jquery API $.post( "servlet/AjaxServlet?m=putWarningRule",{"aa":as} );
{"k":0,"v":0}
String[] jsonArr = request.getParameterValues("aa[]");
Enumeration<String> names = request.getParameterNames(); while (names.hasMoreElements()) { String string = (String) names.nextElement(); System.out.println(string); }
/** * 将对象转换为JSON格式的字符串 * @param obj * @return 返回JSON字符串 */ public static String toJSONAsString(Object obj){ try { return JSONMapper.toJSON(obj).render(false); } catch (Mapper Exception 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()); }
parcourt le tableau et se convertit un par un en classe
Person p = JSONUtils.jsonToObject(jsonArr[0], Person.class);
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; } }
$.ajax({ url: "/xxx", type: "GET", data: { "boxIds": boxIds, "boxType": 0, "time": new Date().getTime() }, traditional: true,//这里设置为true success: function(data) { //do sth... } });
Paramètre de requête 2
Ceci Le paramètre secondaire ne contient pas "[]" et le tableau peut être reçu avec succès en arrière-plan.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!