作者lueichun (= =)
看板java
標題[問題] 明明有進入程式裡的方法,頁面卻跳出404
時間Mon Jul 27 22:10:38 2020
※狀況概述:
就是我透過spring和JQuery ajax,寫了一個簡單的動態下拉式選單的程式,
我在瀏覽器上輸入url,在debugger模式下可以看到執行緒停留在中斷點的位置,
但是瀏覽器卻顯示404,而我在程式裡撈的資料也沒有回到前端,也就是
前端的回呼函數沒有接到撈出來的資料。
※程式碼:
前端:
$(document).ready(function(){
$("
#dropdown1").change(function() {
//alert("ajax");
$.ajax({
type :"GET",
url :
"/TestSpringJQueryAjax1/goToTestController.do?method=queryCountry",
data : {
continentId : $("#dropdown1").val(),
},
dataType: "json",
mmsuccess : function(data) {
//alert(data.list[0].countryId);
//var i = 0;
$("
#dropdown2 option").remove();
data.list.forEach(function(value,index){
$("
#dropdown2").append(new Option(data.list[index].countryName,
data.list[index].countryId));
//i++;
});
},
error:function(data){
alert(data);//進入這裡,並顯示404
}
})
})
});
後端:
@ResponseBody
public String queryCountry(HttpServletRequest request, HttpServletResponse
response) {
String continentId = request.getParameter("continentId");
List<Country> list = testDao.queryCountry(continentId);
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("list", list);
Gson gson = new Gson();
String result = gson.toJson(resultMap);
return result;
}
※錯誤訊息:
後端沒跳任何錯誤訊息,只有前端顯示:
http://localhost:8080/TestSpringJQueryAjax1/goToTestController.do
?method=queryCountry&continentId=2 404 (Not Found)
-------------------------------------
所以現在卡在為何明明有進入到程式裏面,卻仍然跳404錯誤,
而且既然有加上
@ResponseBody這個註釋,但後端撈出來的資料
卻沒有寫進HttpResponse裡面,所以回到前端,回呼函數沒接收到撈出來的資料。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.208.115 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1595859040.A.78A.html
1F:→ pttworld: 有@GetMapping嗎 07/28 06:38
2F:→ bitlife: 測get method時先不透過ajax,直接用瀏覽器網址列輸入完整 07/28 11:10
3F:→ bitlife: request url,然後看輸出.後端那裏(用斷點後印到console檢 07/28 11:11
4F:→ bitlife: 視result的內容,這算基本unit test 07/28 11:11
5F:→ bitlife: 或 07/28 11:11
6F:→ swallowcc: 砍掉,然後寫相同的東西就能跑了? 07/28 16:32
7F:→ l5125: 漏了@Controller跟@GetMapping嗎?直接在網頁輸入訪問的地址 07/28 18:24
8F:→ l5125: 應該會直接在網頁上輸出JSON的字串 07/28 18:25
原本的寫法是傳統的用註冊檔註冊物件,所以沒有加上@Controller
後來的寫法改成用註釋取代註冊檔,用了@Controller @RequestMapping @Repository
這些註釋。另外一些不能用註釋註冊的物件,比方說sessionfactory才用到註冊檔。
反而上面的code,除了ajax的url改成xxx.do之外,其他的我都沒有修改到。
9F:→ tw11509: 如果是用xml設定,請一起提供給大家看,要不然我們很難 07/28 22:04
10F:→ tw11509: 定位問題 07/28 22:04
11F:→ tw11509: 如果有用Java Configuration,也提供相關source code 07/28 22:06
感謝樓上意見,已經可以了,謝謝。
※ 編輯: lueichun (1.167.52.218 臺灣), 07/29/2020 09:01:25