1

ユーザーが指定した URL からデータ ファイルを取得しようとしていますが、その方法がわかりません。実際、サーバーからデータを正常に取得できます。これが私のコードです:

$("button#btn-demo").click(function() {
  $.get('/file', {
    'filename' : 'vase.rti',
  },
  function(json) {
    var data = window.atob(json);

    // load HSH raw file
    floatPixels = loadHSH(data);

    render();
  });
});

サーバーからバイナリデータを取得し、ファイルを解析して画像にレンダリングできます。しかし、今はサーバーなしで動作させたいと思っています。つまり、ユーザーは URL を指定でき、javascript はファイルを取得してレンダリングできます。私はそれがクロスサイトリクエストに関するものであることを知っています。それについて、またそれを実現する方法を教えていただけますか?前もって感謝します!

4

2 に答える 2

0

私は jQuery にあまり詳しくありませんが、知っているように、同一オリジン ポリシーにより、ブラウザーは JavaScript コードが独自のドメイン以外のドメインに AJAX 要求を行うことを許可しません。そのため、一部のデータ (特に JSON 形式) を取得するために<script>、ページに要素を動的に追加し、そのsrcプロパティをデータ プロバイダーのアドレスに設定できます。このようなもの:

<script src='otherdomain.com/give_me_data.json'/>

これは、静的データ (上記の URL など) にアクセスする必要がある場合、またはサーバー側のコードにアクセスできる場合にのみ機能します。このシナリオでは、サーバー側のコードは次のような文字列を返す必要があるためです。

callbackFunction({data1: 'value1', data2: 'value2', ...});

ブラウザがsrcプロパティで指定されたアイテムを取得すると、それを実行しようとします (それがスクリプトであることを認識しているため)。そのため、サーバーが応答として関数呼び出しを送信すると、関数はすべてのデータがフェッチされた直後に呼び出されます。

コールバック関数の名前をパラメーターとして受け入れ、要求されたデータをロードし、ロードされたデータを json パラメーターとして関数呼び出しで構成される適切な出力を生成するように、サーバー側を実装できます。

于 2013-09-19T21:04:18.350 に答える
0

URL が有効な XML ドキュメントのアドレスであると仮定すると、この例ではそれを取得します。URL がスクリプトを保持しているドメインとは異なるドメインにある場合は、サーバー側のスクリプト言語を使用してリソース (URL 値の XML ドキュメント) を取得し、それをドメインに返す必要があります。PHPでは...

<?php echo file_get_contents( $_GET['u'] );

$_GET['u'] はユーザーの URL 値です。PHPスクリプトを呼び出しましょうproxy.php。これで、JavaScript が proxy.php を呼び出し、URL 値を末尾に連結して、URL 値を PHP スクリプトに渡すことができるようになります。

addy = $("#idOfInputFieldhere").val();
$.ajax({
  url: 'proxy.php?u='+addy, /* we pass the user input url value here */
  dataType:'xml',
  async:false,
  success:function(data){
    console.log(data); /* returns the data in the XML to the browser console */
  }
});

を表示するには、chrome で js デバッガー コンソールを使用する必要がありますdataこの時点で、ループ内のデータを取り出して find() http://api.jquery.com/?s=find%28%29を使用する必要があります。

于 2013-09-19T20:56:09.637 に答える