3

jQueryの「GET」関数を使用してサーバーからCSVファイルを読み取ると、データが取得されません。FireBugを使用してコードを見ると、GETリクエストが送信され、戻り値が「200OK」であることがわかります。また、ヘッダーが正しく返されるので、リクエストが確実に行われ、データが返されます。これは、Wiresharkで見られるものでもあります。ここでは、CSVファイルの完全な内容が標準のHTTP応答として返されることがわかります。
しかし、実際のデータは私のスクリプトにはありません。Firebugは空の応答を示し、「success」関数は呼び出されません。何が間違っている可能性がありますか?

編集:情報の本質的な部分が私の質問から欠落しているように見えました。次のコードは私のローカルマシンで実行され、FirefoxのAptanaStudioによって組み込みのテストサーバーを使用して起動されます。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>       
        <title>New Web Project</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script src="jquery.js" type="text/javascript" charset="utf-8"></script>

       <script type="text/javascript">
        var csvData;
        $(document).ready(function() {
           $("#btnGET").click(function() {
                csvData = $.ajax({
                    type: "GET",
                    url: "http://www.mywebsite.com/data/sample_file.csv",
                    dataType: "text/csv",
                    success: function () {
                       alert("done!"+ csvData.getAllResponseHeaders())
                     }
                });
           });
        }) 
 </script>
 </head>   

     <body>
        <h1>New Web Project Page</h1>
        <button id="btnGET">GET Data</button>
    </body>
</html>
4

5 に答える 5

2

クロスドメイン GET を作成しようとしているため、コードが機能しません。ページとスクリプトはローカル マシンでホストされており、GET はまったく別のドメインからデータを取得しようとします。技術的には可能ですが、セキュリティ上の脆弱性があるため、最新のすべてのブラウザーでブロックされます。
Frederick Behrends は私に正しい方向を示してくれました。また、彼が言及しているように、許可されている唯一のクロスドメイン GET は「jsonp」を使用することです。

次のテキストは、jQuery のドキュメントから引用
したものです。

于 2012-07-10T19:08:07.370 に答える
1

私の理解では、 dataType は「テキスト」のみをパラメーターとして受け入れますが、試してみることができますか? 次のページも参照できます: http://api.jquery.com/jQuery.ajax/

ありがとう。

于 2012-07-10T09:13:56.290 に答える
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>       
        <title>New Web Project</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script src="jquery.js" type="text/javascript" charset="utf-8"></script>

       <script type="text/javascript">
        var csvData;
        $(document).ready(function() {
           $("#btnGET").click(function() {
                csvData = $.ajax({
                    type: "GET",
                    url: "http://www.mywebsite.com/data/sample_file.csv",
                    dataType: "text/csv",
                    success: function (result) {
                       alert(result);
                       alert("done!"+ csvData.getAllResponseHeaders())
                     }
                });
           });
        }) 
 </script>
 </head>   

     <body>
        <h1>New Web Project Page</h1>
        <button id="btnGET">GET Data</button>
    </body>
</html>
于 2012-07-10T09:02:43.167 に答える
-1

dataType をコメントアウトしてみましたが、うまくいきました。

于 2020-04-16T23:30:51.987 に答える