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 ファイルに書き込む必要があります。

誰かが私を助けることができますか?ところで、URL はhttps://its.navizon.com/api/v1/sites/1001/stations/で、demo@navizon.com を使用してログインできます - パスワードなし (読み取り専用)

4

1 に答える 1

0

あなたの問題は、内部の HTML 全体を変更することで、 #resultsfor の各要素の内容を変更していることです。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 に答える