jquery ajax调用在成功调用servlet时返回错误

时间:2011-09-30 12:49:07

标签: java javascript jquery servlets

我有一个servlet,它将用户添加到服务器端的文件中 我用jqueries ajax调用它来调用它 我可以在服务器上看到正确调用该方法并添加了我的用户,但是在jquery调用上调用了错误回调。所有状态文本都是错误的 使用firebug,响应似乎是空的。为什么我不能获得成功的jquery回调?

//Servlet Code
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String action = request.getParameter("action");
    String responseStr = "";
    if(action.equals("addUser")) 
    {  
      responseStr = addUser(request);       
    }
    System.out.println("Reponse:" + responseStr);  
    response.setContentType("application/json"); 
    response.setCharacterEncoding("utf-8"); 
    response.getWriter().println(responseStr);
}

private String addUser(HttpServletRequest request) throws IOException
{
    Storage s;

    s = Storage.load();
    String name = request.getParameter("name");
    String imageUrl = request.getParameter("imageUrl");
    User u = new User();
    u.setName(name);
    u.setImageUrl(imageUrl);
    s.addUser(u);
    s.save();
    return "success";
}

//javascript code
function addUser() {
    var name = $('#name').val();
    var imageUrl = $('#imageUrl').val();
    var url = "http://ws06525:8080/QCHounds/QCHoundServlet?action=addUser&name=${name}&imageUrl=${imageUrl}";
    url = url.replace("${name}", name);
    url = url.replace("${imageUrl}", imageUrl);
    $('#result').html(url);
    $.ajax({
      url: url,
      success: function( data ) {
         $('#result').html(data);
      },
      error: function(jqXHR, textStatus, errorThrown) 
      {
           alert("error: " + textStatus); 
           alert("error: " + errorThrown);
      }
    });


}

3 个答案:

答案 0 :(得分:2)

Aaargh!感觉像个白痴。这是一个跨站点脚本问题。 我正在测试从磁盘上的html文件到服务器的调用,所以我的浏览器地址是

file://projects/myproject/content/Users.html<&lt;&lt;失败

而不是:

http://myboxname:8080/appname/Users.html&lt;&lt;&lt;作品

实际代码很好......

答案 1 :(得分:1)

使用它来了解问题是什么,我认为获得解决方案会更好

error: function(e){
    alert(JSON.stringify(e))
}

答案 2 :(得分:0)

一方面,字符串"success"无效json。如果你的ajax查询期望json,那就会失败。

如果您退回"{ \"success\": true }"怎么办?

修改

从你的ajax调用来看,响应不应该是json,为什么你的返回内容类型为json?

如果firebug确实没有响应,那么您的问题必须在写入响应的java代码中。