在JavaScript中提取从Servlet返回的JSON
基本上,我试图用JavaScript提取从servlet返回的JSON。我已经测试了我的servlet类,它确实返回了一些JSON,所以我想我不需要发布该类的代码。以下是我返回的JSON格式:在JavaScript中提取从Servlet返回的JSON,javascript,json,servlets,Javascript,Json,Servlets,基本上,我试图用JavaScript提取从servlet返回的JSON。我已经测试了我的servlet类,它确实返回了一些JSON,所以我想我不需要发布该类的代码。以下是我返回的JSON格式: [{"mrtpopAmt":"7000","mrtpopX":"17854.99820","mrtpopY":"35056.35003"},{"mrtpopAmt":"6300","mrtpopX":"29798.58427","mrtpopY":"37036.56434"}] 在我的JavaScrip
[{"mrtpopAmt":"7000","mrtpopX":"17854.99820","mrtpopY":"35056.35003"},{"mrtpopAmt":"6300","mrtpopX":"29798.58427","mrtpopY":"37036.56434"}]
在我的JavaScript中,我试图将mrtpopAmt、mrtpopX和mrtpopY提取为一个对象。然后将所有对象添加到数组中:
function getAllMRTPop(time){
var jsonArray;
var Data = JSON.stringify({ time: time });
$.ajax({
url: "/TrackNYP/TrackNYPServlet?action=GetAllMrtPop&time="+ Data + "",
type: "GET",
data: Data,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var parsed = JSON.parse(data.d);
console.log(data.d);
$.each(parsed, function (i, jsondata) {
var jsonObject;
jsonObject.put("mrtpopAmt", jsondata.mrtpopAmt);
jsonObject.put("mrtstationX", jsondata.mrtstationX);
jsonObject.put("mrtstationY", jsondata.mrtstationY);
alert(jsonObject);
jsonArray.push(jsonObject);
});;
},
error: function (request, state, errors) {
}
});
}
但是,我在这一行收到错误消息,如意外标记:u
:
var parsed = JSON.parse(data.d);
我的servlet URL包含两个参数,一个是action,另一个是time:
http://localhost:8080/TrackNYP/TrackNYPServlet?action=GetAllMrtPop&time=8:00
所以我想知道我是否通过在url中传递参数以及上面代码中的数据来正确传递参数
我想知道哪一部分出了问题?提前谢谢
编辑
因此,我已将JavaScript部分更新为:
function getAllMRTPop(time){
var jsonArray = [];
$.ajax({
url: "/TrackNYP/TrackNYPServlet?action=GetAllMrtPop&time=8:00",
type: "GET",
data: time,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(data);
//var parsed = JSON.parse(data.d);
$.each(data, function (i, jsondata) {
var jsonObject;
console.log(mrtpopAmt);
jsonObject.put("mrtpopAmt", jsondata.mrtpopAmt);
jsonObject.put("mrtstationX", jsondata.mrtstationX);
jsonObject.put("mrtstationY", jsondata.mrtstationY);
jsonArray.push(jsonObject);
});;
},
error: function (request, state, errors) {
}
});
}
我试图打印出mrtpopAmt,但它确实返回了一些信息。但有一条错误消息:
Cannot call method 'put' of undefined
有什么想法吗?通过指定
数据类型:“json”
,jQuery已经知道您将得到一个json响应,无需执行var parsed=json.parse(data.d)
只要做:
var parsed=data.d
编辑:
function getAllMRTPop(time){
var jsonArray = [];
$.ajax({
url: "/TrackNYP/TrackNYPServlet?action=GetAllMrtPop&time=8:00",
type: "GET",
data: time,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(data);
$.each(data, function (i, jsondata) {
var jsonObject = {};
jsonObject.mrtpopAmt = jsondata.mrtpopAmt;
jsonObject.mrtstationX = jsondata.mrtstationX;
jsonObject.mrtstationY = jsondata.mrtstationY;
jsonArray.push(jsonObject);
});;
},
error: function (request, state, errors) {
}
});
}
我认为现在发生的事情是,
data.d
未定义,因此您得到了一个奇怪的消息,关于意外的u
请尝试以下方法:
var parsed = JSON.parse(data);
编辑我认为您的请求格式可能不正确:
var Data = JSON.stringify({ time: time });
$.ajax({
url: "/TrackNYP/TrackNYPServlet?action=GetAllMrtPop&time="+ Data + "",
在我看来,这将成为最后一点:&time={“time”:“time”}
,所以您可能想看看如何构造数据。也许直接通过时间
url: "/TrackNYP/TrackNYPServlet?action=GetAllMrtPop&time="+ time + "",
删除后,我收到错误消息,如jquery.js:564无法读取未定义的属性'length'。有什么想法吗?我想知道我是否正确地将参数传递给servlet。让我更新这个问题。:)也许你只需要使用数据,你能发布数据的值吗?对不起,当我试图打印数据时,它告诉我输入的意外结束。你有什么想法吗?也许你发送参数的方式不对。您确定这一行url:“/TrackNYP/TrackNYPServlet?action=GetAllMrtPop&time=“+Data+”
正确吗?您通常如何在jQuery之外调用此URL?我使用以下URL在浏览器上测试了我的servlet:。我试图按照Todd的建议将数据直接更改为time,但仍然收到相同的错误消息Fyi:在问题中更改为JSON后,经过编辑以提供更合理的答案!如果我改为这个,我会收到错误消息,比如在同一行输入的意外结束。那么这是否意味着问题来自我的Servlet或Javascript类?我已经编辑了参数传递的问题,是否正确?否,不起作用。我仍然在同一条线路上收到相同的错误消息嗯,对不起,伙计,我试过了。可能检查服务器日志或在服务器上设置断点以确保输入正确,也可能在解析之前在客户端上执行警报(数据)
,查看是否有AMI。好的,当然!谢谢你的帮助:)