记录下Ajax跨域,工作中并没有用到,因为前端再处理这个,据说是框架已经解决。自己私下遇到这个问题,特来记录一下。
前端代码如下:
$("#searchBut").click(function() {
var url = "http://localhost:8085/search?keyword=" + $("#searchInput").val();
$.ajax({
type: "get",
async: false,
url: url,
dataType: "jsonp",
jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
jsonpCallback:"callback",//手动指定回调函数名,服务端也是callback;我也不太理解
success: function(json){
console.log(json);
},
error: function(){
alert('fail');
}
});
});
后端代码如下:
@RequestMapping(value = "/search")
@ResponseBody
public String search(String keyword,Model model,@RequestParam(defaultValue="1")int page){
SearchResult result = new SearchResult();
try {
keyword =new String(keyword.getBytes("ISO-8859-1"),"UTF-8");
result = searchService.selectIndexByKeyWord(keyword,page);
} catch (Exception e) {
e.printStackTrace();
}
//此处需要注意
return "callback("+new Gson().toJson(result)+")";
}