Spring MVC Controller从未从ajax Post调用过

时间:2013-11-14 10:42:42

标签: java ajax spring-mvc

我有关于.ftl的页面,当我输入localhost:8080 / ui / about时会调用它 我把下面的代码块放在里面。通过SendToServlet()函数我试图将用户信息发送到我的控制器,即OAuthController.java

 function SendToServlet(){
                            $.ajax({

                                        url: "localhost:8080/ui/about",
                                        type: "POST",                                            
                                        data: JSON.stringify({ user:jsonObj}),                                     
                                        contentType: 'application/json',
                                        success: function(result) {
                                            alert(done);
                                        },
                                        error: function(xhRequest, ErrorText, thrownError) {
                                        alert(JSON.stringify(jsonObj));
                                        }
                                    });   
                                }
</script>

My Spring MVC Controller类代码具有以下实现 - 它所做的只是它接受用户的信息然后设置当前用户:

@Controller
@RequestMapping("/about")
public class OAuthController {

@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String post( @RequestBody   String items, HttpServletRequest request, HttpServletResponse response)
{




    String jsonResp = items;//sb.toString();
    ArrayList<String> usercredentials = new ArrayList<String>();
    usercredentials = parseJson(jsonResp);
    UserMethods usermethods = new UserMethods();
    usermethods.setCurrentUser (usercredentials);  
    response.setContentType("text/plain");
    response.setCharacterEncoding("UTF-8");

    return "{\"success\":\"\"}";


}

 public ArrayList<String> parseJson(String json){


}


}

我的问题是控制器永远不会被调用,实际上我从来没有看到Post请求通过Firebug发送到任何地方。我花了几天时间,但仍然没有运气。你有什么建议吗?

3 个答案:

答案 0 :(得分:0)

你不需要像这样打电话吗?

url: "localhost:8080/ui/about/post",

但首先这样做:

@RequestMapping(method = RequestMethod.POST, value = "/post")

答案 1 :(得分:0)

您需要将值绑定到您的函数。您的网址localhost:8080/ui/about/post仅用于定位控制器,但它不会执行任何功能,因为您没有调用任何函数。

要调用该函数,您必须这样做:

@RequestMapping(method = RequestMethod.POST, value ="/anyValue")
public String anyFunctionName(anyParam){...}

上述功能将绑定到网址localhost:8080/ui/about/anyValue

答案 2 :(得分:0)

尝试添加.html怎么样?应用程序不会自动添加它。