[英]Passing PathVariable to AJAX controller
我希望能夠通過單擊鼠標將在文本框中輸入的值傳遞給我的AJAX控制器。
控制器代碼:
@EnableWebMvc
@Controller
public class HelloWorldController {
public static class User {
private String name, surname;
int age;
public User(String name, String surname, int age) {
this.name = name;
this.surname = surname;
this.age = age;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public String getSurname() {
return surname;
}
}
@RequestMapping("/hello")
public ModelAndView helloWorld() {
return new ModelAndView("home/hello.jsp", "message", "Spring MVC Demo");
}
@RequestMapping(value = "/hello/{name}", produces = "application/json")
public @ResponseBody User getUser(@PathVariable(value = "name") String name) {
return new User(name, "Surname", 25);
}
}
相關查看代碼:
$.getJSON("hello/", {name: $('#username').val()} , function(obj) {
$("ul").append("<li>"+obj.name+"</li>");
});
// ...
<input type="text" name="username" id="username" >
因此,這是行不通的,當單擊按鈕時,什么也沒有發生。 但是,當我將控制器更改為@RequestParam
它可以工作,但是我希望它與@PathVariable
一起工作,以便顯示正確username
的URL。
問題出在哪里,我該如何解決?
這聽起來像是因為您正在使用GET方法傳遞HTTP請求,而參數(名稱)是通過查詢字符串傳遞的。
這就是@RequestParam
起作用而@PathVariable
不能起作用的原因。
如果必須使用GET方法執行此操作,請嘗試按以下方式構建URL:
/hello/" + $('#username').val() + "/"
並且不要用你的ajax請求傳遞數據 。
嘗試使用Firebug或Google開發人員工具,以查看將要發送到服務器並返回到瀏覽器的數據。
像這樣的東西:
$.getJSON(/hello/" + $('#username').val() + "/",
function(obj) {
$("ul").append("<li>"+obj.name+"</li>");
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.