我使用Spring的Java存在JS问题。我做了一些WebServices,PHP运行顺利,但我需要使用JS访问它们。我已经尝试了一切,仍然没有打电话给我的服务
我的Java代码
@Controller
@RequestMapping("/map")
public class MapRest {
@Autowired
private MapService mapService;
@RequestMapping(value = "/searchCarByUser", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<RetornoMapa> searchCarByUser(@RequestBody User user) {
RetornMap retornMap = new RetornMap();
try {
List<Car> list = mapService.search(user);
retornMap.setListCar(list);
} catch (Exception e) {
Log.logError("Error", e);
}
return new ResponseEntity<>(retornMap, HttpStatus.OK);
}
}
现在我在JS中的代码
function testeJson() {
var user = {
id: 1,
name: 'Jonh'
};
var json = JSON.stringify(user);
$.ajax({
type: "POST",
url: "http://localhost:8080/orion/webservice/map/searchCarByUser",
traditional: true,
data: json,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(data);
}, error: function (jqXHR, status) {
// error handler
console.log(jqXHR);
alert('fail' + status.code);
}
});
}
当我调用JS函数时,总是返回等于404的状态。
当我使用Chrome的高级REST客户端时,通常会调用上面列出的服务。
我想告诉你我哪里出错了? 该怎么办?
答案 0 :(得分:1)
从方法@Path
注释中删除第一个斜杠:
@Controller
@RequestMapping("/map")
public class MapRest {
@Autowired
private MapService mapService;
@RequestMapping(value = "searchCarByUser", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<RetornoMapa> searchCarByUser(@RequestBody User user) {
//...
每个方法的@Path
遵循相同的规则,例如,来自href="..."
属性的路径:如果它以斜线开头,则它是绝对路径,否则它是相对路径(在这种情况相对于基类“@Path
”。
考虑到这一点,如果你打电话给http://localhost:8080/orion/webservice/searchCarByUser
(没有/map
部分),你的好的JS代码应该有用,你可以根据需要进行测试。
答案 1 :(得分:0)
删除控制器上的映射并将其保存在方法
Rectangle {
anchors.centerIn: parent
id: root
radius: 20
width: 300
height: 300
Rectangle {
id: clipper
width: 100
height: 100
color: 'transparent'
clip: true
Rectangle {
id: clipped
width: parent.width + radius
height: parent.height + radius
radius: root.radius
color: 'red'
}
}
}
因为,@ RequestMapping对方法的路径是相对于类注释的路径。