我在使用 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客户端时,通常会调用上面列出的服务。
我想知道我哪里出错了? 应该做什么?
最佳答案
从方法@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
部分),如果需要的话可以测试一下。
关于javascript - 使用 JS 消耗 JSON 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39969340/