使用JQuery处理LIST中的JSON数据

时间:2015-11-05 23:47:35

标签: javascript java jquery json jersey

我使用Ajax& Jquery来处理来自服务器的JSON数据(In List),但是,客户端无法接受JSON数据并不断弹出错误方法。

我已经实现了一个renderList()方法来解析List,但是它仍然无法工作。

以下是我的Javascript和Java代码。

有人可以帮帮我吗?提前致谢。

JavaScript的:

var serviceURL = "http://localhost:8080/TransportationNetwork/rest/paths";


$('#findPaths').click(function() {
        getPaths();
});

function getPaths() {
    console.log('display paths');
    $.ajax({
        type:'GET',
        url: serviceURL,
        dataType:'json', // data type get back from server
        data:'st=' + dataToServer(), //data sent to server 
        success: renderList,
        error: function(jqXHR, textStatus, errorThrown){
            alert('Path Finder: ' + textStatus);
        }
    });
}



function dataToServer() {
    var array = "";
        str1 = $('#source').val();
        str2 = $('#target').val();

    array = str1 + "," + str2;

    return array;
}

function renderList(data) {
    var list = data == null ? [] : (data instanceof Array ? data : [data]);

$('#PathList li').remove();
$.each(list, function(index, path) {
    $('#PathList').append('<li>'+ path.source + ' -> ' + path.target + ': ' + path.weight + '</li>');
});

}

爪哇: 在资源文件中:

@GET
@Produces(MediaType.APPLICATION_JSON)
public List<DirectedEdge> pathsInfo(@QueryParam("st") String st) {
    System.out.println("Searching paths : " + st);
    return pathDao.getEdgeList(st);
}  

返回的DirectedEdge对象:

public class DirectedEdge {
private int source;
private int target;
private double weight;

public DirectedEdge() {

}

public DirectedEdge(int v, int w, double weight) {
    super();
    this.source = v;
    this.target = w;
    this.weight = weight;
}
.... Other code  ...
}

Testing Result from Server

1 个答案:

答案 0 :(得分:0)

你的json应该以{{1​​}}而不是string返回。尝试使用Array

JSON.parse docs

JSON.parse应该是这样的:

renderList

仅供参考:function renderList(data) { var parsedData = JSON.parse(data); var list = parsedData == null ? [] : (parsedData instanceof Array ? parsedData : [parsedData]); } 相当不可靠。我建议将此辅助方法添加到您的代码中以确定将来的类型:

instanceof

这将返回对象类型的字符串表示形式。

您可以在此处查看有关此主题的更多信息: instanceof in JavaScript