2011-09-30 92 views
3

我有一个servlet将用户添加到服务器端的文件中。
我用jqueries ajax调用它来调用它。
我可以在服务器上看到方法被正确调用并添加了我的用户,但错误回调正在jquery调用中调用。所有的状态文字都是错误的。
使用萤火虫的反应似乎是空的。为什么我无法获得成功的jQuery回调?jquery ajax调用在成功调用servlet时返回错误

//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); 
     } 
    }); 


} 
+0

是怎样的respons如果FireBug显示响应为空,那么成功了吗? – BNL

+0

我的意思是服务器端功能成功执行并添加我的用户,但响应确实是空的,我不明白为什么? – n4rzul

回答

2

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

文件://projects/myproject/content/Users.html < < <失败

代替:

http://myboxname:8080/appname/Users.html < < <作品

实际的代码是好的...

0

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

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

编辑

它看起来像从你的Ajax调用,响应不应该是JSON,为什么是你的回报的内容类型的JSON?

如果萤火虫显示没有回应,那么您的问题必须在写入回应的java代码中。

+0

试过了。没有区别 – n4rzul

+0

检查编辑..... – BNL

1

时使用此学习有什么问题,这将是获取更好的解决方案,我认为

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

仍然出现错误。这里是:{“readyState”:0,“responseText”:“”,“status”:0,“statusText”:“error”} – n4rzul

+0

我猜想它是关于你的contentType或ajax调用的数据类型。你能分享你的ajax呼叫代码吗? –

+0

你的意思是实际的ajax调用?在问题中,只需在代码中向下滚动一下即可。 – n4rzul

相关问题