2016-08-26 6 views
1

ich unten Objekt genannt habe ItemInfo in Javascript-Ajax Parameter verschlüsselt werden, wenn sie Java contoller geben

itemInfo = { 

catalogId:[{"catId":"RS-122-2001","quantity":"1"},{"catId:"RS-122-2002","quantity":"1"}] 

} 

Ich gebe diese Aufgabe durch Ajax zu einem Java-Controller-

$.ajax({ 
      type: 'GET', 
      url: '/bin/path/servlet', 
      dataType: 'text', 
      data: { 
       productId: itemInfo.catalogId, 
       operation: "addToCart" 
      }, 
      success: function(obj) { 
       if (obj) { 
        //do something 
       } 
      }, 
      error: function(request, status, error) { 
       console.log(request.responseText); 
      } 

     }); 

Wenn ich sehe, die Anforderung, seine gesendet wie this-

<<hostName>>/bin/path/servlet?productId%5B0%5D%5BcatId%5D=RS-122-2001&productId%5B0%5D%5Bquantity%5D=1&productId%5B1%5D%5BcatId%5D=RS-122-2002&productId%5B1%5D%5Bquantity%5D=1&operation=addToCart 

Decoded URL-Parameter sieht aus wie this-

productId[0][catId]=RS-122-2001&productId[0][quantity]=1&productId[1][catId]=RS-122-2002&productId[1][quantity]=1&operation=addToCart 

Es macht keinen Sinn in Java und übergebene Werte sind nicht lesbar. Stimmt etwas nicht mit der Implementierung? Wie kann ich übergebene Werte im Java-Controller abrufen?

+0

ist es nur URL codieren. –

+0

Ja das verstehe ich. Aber warum ist es codiert? und wie greife ich auf Felder in Java zu? –

+0

https://docs.oracle.com/javase/7/docs/api/java/net/URLDecoder.html – knutesten

Antwort

0

Versuchen Sie, Ihre Daten stringify:

productId: JSON.stringify(itemInfo.catalogId) 

By the way Ich glaube nicht eine gute Idee, komplexe Aufgabe durch "GET" -Methode posten. Ich empfehle, das Servlet zu ändern, um die Methode "POST" zu akzeptieren, und dann den Skripttyp auf "POST" zu ändern.

+0

Anstatt direkt auf Parameter zuzugreifen, musste ich zuerst den vollständigen Wert in ein JSON-Objekt konvertieren. Zugreifen Sie dann auf Werte, indem Sie das JSON-Objekt durchlaufen. –

Verwandte Themen