Ajax JSON Objekt verschicken

BlubBlub

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

java servlet
Java:
  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.
 
Ich würde Java POJOs nutzen und per GSON oder Jackson konvertieren lassen. Dann brauchst du dich auch nicht um gewisse Kleinigkeiten kümmern.
 
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
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
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>
 

Zurück
Oben