我使用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 ...
}
答案 0 :(得分:0)
你的json应该以{{1}}而不是string
返回。尝试使用Array
JSON.parse
应该是这样的:
renderList
仅供参考:function renderList(data) {
var parsedData = JSON.parse(data);
var list = parsedData == null ? [] : (parsedData instanceof Array ? parsedData : [parsedData]);
}
相当不可靠。我建议将此辅助方法添加到您的代码中以确定将来的类型:
instanceof
这将返回对象类型的字符串表示形式。
您可以在此处查看有关此主题的更多信息: instanceof in JavaScript