1

csv応答を取得できないという問題が少しあります。

ここにcsvへのリンクが利用可能なcsvがあります

このデータを取得しようとしていますが、応答の特殊文字に問題があります。

データを正常に受信しましたが、jQueryがデータをデコードしようとし、構文エラーが発生しました。私の要求は次のとおりです。

$.ajax({
    url: 'http://toolserver.org/~daniel/WikiSense/Contributors.php?wikilang=en&wikifam=.wikipedia.org&page=Cloud+computing&since=&until=&grouped=on&order=-edit_count&max=1000&order=-edit_count&format=csv',
    dataType: "script",
    success: function(data){
        alert('success');
    },
    error: function(test1, test2, test3) {
        alert('error');
    }
});

エラーは(%文字を指している)です

SyntaxError: syntax error
1004+%28922%2F82%29,SamJohnston,2008-07-26+09%3A40,2013-03-07+18%

また、データをデコードしないように、dataTypeをtextに設定しようとしました。この場合、ajaxリクエストでエラーが発生します。

$.ajax({
    url: 'http://toolserver.org/~daniel/WikiSense/Contributors.php?wikilang=en&wikifam=.wikipedia.org&page=Cloud+computing&since=&until=&grouped=on&order=-edit_count&max=1000&order=-edit_count&format=csv',
    dataType: "text",
    success: function(data){
        alert('success');
    },
    error: function(test1, test2, test3) {
        alert('error');
    }
});

.ajax()パラメーターcontentType、dataType、scriptCharsetなどを試してみました。役に立ちません。

4

2 に答える 2

1

dataType: "text"正しいでしょう。クロスドメイン呼び出しを防ぐ同一生成元ポリシーに遭遇しているようです。あなたが言ったように、jQueryは実際のajax呼び出しを行うのではなくdataType: "script"、リクエストを自動的に要素の追加に変換しました。scriptスクリプトをクロスドメインで参照する要素を追加scriptしても、SOPに違反することはありません(そのため、一般的なスクリプトにGoogleやMicrosoftなどのCDNを使用できます)。ただし、CSVは(もちろん)有効なJavaScriptコードではないため、CSVを取得するときにそれを行うことはできません。

取得元のサーバーが制御下にあり、最新のブラウザー(この場合は、Chrome、Firefox、Operaの漠然とした最新バージョン、またはIE9以降を使用している)を使用している場合は、実装できます。クロスオリジンリソースシェアリング。サーバーがリクエスト元のドキュメントのソースオリジンを許可している場合に、クロスオリジンajax呼び出しを許可します。CORSは基本的にOPTIONS、適切なヘッダーを使用してajax呼び出しを送信してもよいかどうかを尋ねるHTTP呼び出しに応答することを意味します。

于 2013-03-25T07:44:27.320 に答える
0

これはクロスドメインリクエストであり、受け入れられないようです。詳細については、ここここをお読みください

于 2013-03-25T07:48:43.240 に答える