簡體   English   中英

將PathVariable傳遞給AJAX控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM