Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中提取从Servlet返回的JSON_Javascript_Json_Servlets - Fatal编程技术网

在JavaScript中提取从Servlet返回的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

基本上,我试图用JavaScript提取从servlet返回的JSON。我已经测试了我的servlet类,它确实返回了一些JSON,所以我想我不需要发布该类的代码。以下是我返回的JSON格式:

[{"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。好的,当然!谢谢你的帮助:)