1

以下に貼り付けられているバッチ URL 展開のために、stackoverflow ユーザー duotrigesimal によって JSFiddle で作成されたコードを使用しようとしています。

var tests = [
'http://t.co/NJwI2ugt',
'http://www.google.com',
'http://www.goo.com',
'http://www.goog.com'
 ];

for (i in tests) {

var data = {
    url: tests[i],
    format: 'json'
};

$.ajax({
    dataType: 'jsonp',
    url: 'http://api.longurl.org/v2/expand',
    data: data,
    success: function (response) {
       $('#output').append(response['long-url']+ '<br>');
    }

});
}

この場合、これら 4 つの URL を取得し、それらの拡張バージョンを出力として提供します。ただし、これは成功した場合にのみ行われます。上記の 4 つの URL では、1 番目、2 番目、4 番目は適切な URL に解決され、出力に表示されますが、エラーである 3 番目の URL はコードによって完全にスキップされます。エラーが発生した場合、コードでエラー メッセージを表示するか、少なくとも改行を生成してスキップして先に進むようにします。それ以外の場合、4 つの短縮 URL を入力すると、出力 3 が表示され、どれがエラーだったのかわかりません。誰か助けてくれませんか?

4

1 に答える 1

0

longurl API のタイムアウトは非常に長いようです。そのため、より適切な値を自分で設定する必要があります。この例では 3 秒に設定されていますが、必要に応じて調整できます。

次に、応答がタイムアウトしたかどうかを確認し、それに応じて処理します。

これはjsFiddleです。

var tests = [
'http://t.co/NJwI2ugt',
'http://www.google.com',
'http://www.asdkofhakisgjhasfjhbvasfdv.com',
'http://www.goog.com'
 ];

for (i in tests) {

var data = {
    url: tests[i],
    format: 'json'
};

$.ajax({
    dataType: 'jsonp',
    url: 'http://api.longurl.org/v2/expand',
    data: data,
    timeout: 3000,
    complete: function (response) {

        if( response.statusText == 'success' ) {
            $('#output').append('success: '+response.responseJSON['long-url']+'<br>');
        } else {
            $('#output').append('error: error message here <br>');
        }    


    }, 

});
}
于 2013-08-27T17:08:30.217 に答える