0

我是新手,对此我深表歉意。我正在编写一个将发出 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 文件。

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

4

1 回答 1

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从未使用过。我把它改成了更有意义的东西。

于 2013-09-27T11:06:01.973 回答