# Ajax JSON Objekt verschicken



## BlubBlub (11. Mai 2011)

javascript

```
$.ajax({
							type: "POST",
							url: zielUrl,
							data: {wanted:"einArray"},													
							cache:false,
							dataType: "json",
							
							success: function(data)	 												
							{
                                                             var AnArray = eval('('+data+')');
                                                             alert(AnArray[0]);
                                                        }
            });
```

java servlet

```
protected void doPost(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException 
  {
            PrintWriter out = response.getWriter();
            response.setContentType("application/json");
            out.println("{'meinArray':['Zitrone','Banane','Orange']}");
             out.close();
 }
```

Hi wie kann man mit Ajax auf ein Array zugreifen, dass man sich vom Servlet holt?
Hab versucht ein JSON Objekt zu verschicken und auf der Clientseite auszugeben aber es klappt nicht.


----------



## maki (11. Mai 2011)

*verschoben*


----------



## Noctarius (11. Mai 2011)

Ich würde Java POJOs nutzen und per GSON oder Jackson konvertieren lassen. Dann brauchst du dich auch nicht um gewisse Kleinigkeiten kümmern.


----------



## mvitz (11. Mai 2011)

1) Deine Rückgabe ist falsch (anstelle der ' muss man ein " nutzen, in Java kannst du das in einen String packen indem du das " mit einem \ escapst).

2) Du gibts kein Array zurück, sondern ein Objekt, dass unter der Property "meinArray" ein Array enthält.

3) Man soll Streams nur dann schließen, wenn man Sie auch selber geöffnet hat.

Folgendes hat bei mir funktioniert:

AjaxServlet.java

```
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class AjaxServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        final PrintWriter out = resp.getWriter();
        resp.setContentType("application/json");
        out.println("[\"A\", \"B\", \"C\"]");
    }

}
```

index.html

```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Ajax Example</title>
    <script type="text/javascript" src="jquery-1.6.js"></script>
    <script type="text/javascript">
      $.ajax({
        type: "POST",
        url: "ajax",
        dataType: "json",
        success: function(data) {
          var array = eval(data);
          $.each(array, function(index, value) {
            alert(index + ': ' + value);
          });
        }
      })
    </script>
  </head>
   <body>
   </body>
</html>
```


----------

