错误消耗JSON与JS

时间:2016-10-11 01:51:17

标签: javascript java json rest spring-mvc

我使用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客户端时,通常会调用上面列出的服务。

我想告诉你我哪里出错了? 该怎么办?

2 个答案:

答案 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对方法的路径是相对于类注释的路径。