0

JSONデータを返す外部URLにアクセスしようとしていますが、そのデータの値の1つに基づいて、テーブル行を非表示にする必要があります。jsonp、jquery、ajaxでこれを行うためにいくつかのオプションを試しましたが、何も機能していないようです。YQLは私のために働いていますが、コードが独立している必要があるため、外部サービスを使用できません。誰かがJavaScriptでこれを機能させる方法を教えてください

これは私が試した1つのアプローチです

<script type='text/javascript'>



    function checkBlueLight() {

        $('#trBlueLight').hide();

        $.getJSON('http://.../Lights/getBlueLight?callback=?', function (data) {
            if (data.expDate != null) {
                $('#trBlueLight').show();
            } else {
                $('#trBlueLight').hide();
            }
        });
        }



    </script>

これは私が試した別のアプローチです。同じ問題が無許可 - 401

$.ajax({
    url: 'http://.../Lights/getBlueLight',
    dataType: 'json',
    success: function(data) {
       if (data.expDate != null) {
           $('#trBlueLight').show();
       } else {
           $('#trBlueLight').hide();
       }
    }
});  

私はjspを使用してURLからデータを取得しようとしましたが、それもいくつかの権限の問題を引き起こしています

4

4 に答える 4

0

外部 URL を制御しますか? あなたができるので:

ローカル ページで:

function your_function(data) {
        alert(data.message)
}

そして、http://www.include.me/remote.php (または JSON を返すもの) では、それが返されます。

your_function({message: "it works!"});

そして、ローカル ページに戻ります。

var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", "http://www.include.me/remote.php");
document.getElementsByTagName("head")[0].appendChild(script);

次に、スクリプトが含まれます。これは、提供されたデータを使用して既に定義された関数を実行するように指示するだけです。

于 2013-05-09T05:14:18.487 に答える
0

jsonp を使用するには、サーバーは戻り値の型をコールバック関数にバインドする必要があります。そうでない場合、サーバーからデータを取得できません。

cors を使用している場合、サーバーはそれをサポートする必要があります。つまり、サーバーが設定する必要があります。

"Access-Control-Allow-Origin" header to "*"
于 2013-05-09T05:44:41.957 に答える
0

外部 URL を制御できず、それが no をサポートしていないCORS場合JSONP、最善の選択肢は、サービスのサーバー側プロキシ メソッドを作成することです。したがって、サーバーでは、サーバー側でクライアントに代わって実際のサービスにアクセスし、結果をクライアントに返す独自のホストに新しいエンドポイントを公開します。

于 2013-05-09T05:31:57.137 に答える
-1

JS または jQuery の問題は、データ交換を禁止するブラウザーまたはサーバー、またはその両方の組み合わせによっては、クロスドメイン データを使用できない場合があることです。これは、多くのブラウザーとサーバーのセキュリティ ポリシーです。

最良かつ最も安全な選択は、JS または jQuery (Ajax 呼び出し) と PHP cURL を組み合わせて使用​​することです。この場合、cURL はデータ xml/json 形式を要求する呼び出しを行い、Ajax 要求に送り返します。

次の例を見てください。

JS/JQuery AJax スクリプト:

   $.ajax({
      url: 'php_script_with_cURL.php',
      dataType: 'json',
      data:'THE_DATA_OR_REQUEST',  
      type:'post',
      success: function(data) {
        if (data.expDate != null) {
          $('#trBlueLight').show();
        } else {
          $('#trBlueLight').hide();
        }
      }
   }); 

次にphpファイル(JSと同じサーバーにある必要があります):(URL文字列または投稿を使用してデータを要求できます)

    //USE POST IF YOU NEED TO SEND VARIOUS COMMANDS TO GET THE DATA BACK
    $post = $_POST;

    //INIT THE CURL CALL
    $curl = curl_init();

    curl_setopt_array($curl, array(

        CURLOPT_RETURNTRANSFER => 1,

        //this will tell the server how to return the data format
        CURLOPT_HTTPHEADER => array('Content-type: application/json'),

        //use the query string if require, if not just remove it
        CURLOPT_URL => 'http://THE_URL_HERE.COM?request_value=some_value',

        //use the post only if yo need to post values 
        CURLOPT_POST => 1,
        CURLOPT_POSTFIELDS => array(
            value1 => $post['value1'],
            value2 => $post['value2']
        )
        //alternative you can also pass the whole POST array
        //CURLOPT_POSTFIELDS => $post
    ));

    $data = curl_exec($curl);

    if(!$data){
        die('Error: "' . curl_error($curl) . '" - Code: ' . curl_errno($curl));
    } 

    curl_close($curl);

    //echo the data that will be sent to the JS/JQuery Ajax call
    echo $data;

    //or if you need to do more processing with php  
    //$response = json_decode($data);

これがお役に立てば幸いです:) ハッピーコーディング!

于 2013-05-09T06:34:08.903 に答える