每隔XX秒调用一次GET API,并将JSON响应放入CSV中

时间:2013-09-27 10:30:54

标签: javascript json arrays

我是新手,我为此道歉。 我正在编写一个将发出GET请求的脚本。结果是一个JSON数组,最好的办法是将它自动放入CSV / TXT文件中。

$.ajax({
type: "GET",
url: BASE_URL,
beforeSend: function(jqXHR) {
jqXHR.setRequestHeader("Authorization", "Basic " + Base64.encode(USERNAME + ":" + PASSWORD));
},
success: function(jimmi) {
// Output the results
if (typeof jimmi === "string") {
station = JSON.parse(jimmi);
}             
var ar_len = jimmi.length
for (i=0; i < ar_len;) {
$("#results").html(
"Station: " + jimmi[i].name + "<br />")  
i++     
}
},
error: function(jqXHR, textStatus, errorThrown) {
alert('Error');
}
});

我的问题: *我只显示数组的最后一个元素,我无法弄清楚原因。 *我需要每5秒自动拨打一次电话 * JSON结果应写入CSV / TXT文件。

有人能帮助我吗? 顺便说一句,URL是https://its.navizon.com/api/v1/sites/1001/stations/,你可以使用demo@navizon.com登录 - 没有密码(只读)

1 个答案:

答案 0 :(得分:0)

您的问题是,您正在通过更改整个内部HTML来更改#results的每个元素的jimmi内容。所以最后,只显示最后一个元素。您需要使用append代替。要每5秒拨打一次电话,请使用setTimeout方法。这样的东西:

function makeCall() {
    $.ajax({
        type: "GET",
        url: BASE_URL,
        beforeSend: function(jqXHR) {
        jqXHR.setRequestHeader("Authorization", "Basic " + Base64.encode(USERNAME + ":" + PASSWORD));
        },
        success: function(jimmi) {
            // Output the results
            if (typeof jimmi === "string") {
                jimmi = JSON.parse(jimmi);
            }

            for (i=0; i < jimmi.length; i++) {
                $("#results").append("Station: " + jimmi[i].name + "<br />");
            }
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert('Error');
        }
    });

    window.setTimeout(makeCall, 5000);
}

makeCall();

注意:station = JSON.parse(jimmi);无用,因为从不使用变量station。我把它改成了更有意义的东西。