3

GET HTTP cal を使用しようとしています。高度な REST クライアント ( Chrome プラグイン) で動作するリクエストを受け取りましたが、JQuery で動作させることができません。

このスレッドからのアドバイスに従って、次のように設定しました。

$(document).ready(function() {
$('.ap1').click(function(){
$.ajax({
      url: 'https://api2.panopta.com/v2/monitoring_node/41',
      type: 'GET',
      dataType: 'json',
      success: function() { alert('hello!'); },
      error: function() { alert('boo!'); },
      beforeSend: setHeader
  });
});
function setHeader(xhr) {
    //extra stuff from REST CLIENT
    xhr.setRequestHeader('Authorization', 'ApiKey nGhhAjGshbOu4dhLYvGY');
} });

これは私が取得しようとしている出力です(RESTクライアントで成功しました)

{
url: "https://api2.panopta.com/v2/monitoring_node/41"
hostname: "phoenix01.monitorengine.com"
ip_address: "65.23.158.149"
name: "Phoenix"
textkey: "na.west.phoenix01"
}

その JSON から name 変数にアクセスして、それを関数に渡したいだけです。オブジェクトを作成する方法を理解しようとする前に、少なくとも上記のコードを機能させて、名前を正常に呼び出すことができるようにしたかったのです。.append(object.name)

JQuery の学習を始めたばかりで、これが初めての投稿です。十分な詳細が含まれていない場合は申し訳ありません。

4

2 に答える 2

1

他のドメインに ajax 呼び出しを適用することはできません。curl()またはfile_get_content(url)を介してサーバー間呼び出しを使用して回避策を作成し、スクリプトに対して js 呼び出しを行うことができます。

まず、サーバーを呼び出す php ファイルを作成します。file_get_contents を使用する場合は、php.ini で allow_url_fopen を指定する必要があります。

myProxy.php

<?
$content = file_get_contents($yourUrl);
// do whatever you want with the content then
// echo the content or echo params via json
?>

あなたのjsはあなたのPHPを呼び出す必要があるので、回避策があります 同じドメインポリシー:

$.ajax({
      url: 'myProxy.php',
      type: 'GET',
      dataType: 'json',
      success: function() { alert('hello!'); },
      error: function() { alert('boo!'); },
      beforeSend: setHeader
  });
});
于 2013-06-18T22:34:45.920 に答える
0

あなたのAPI情報が正しいかどうかはわかりませんが、あなたがする必要がある主なことは、musaが言及しているオリジンポリシーと同じため、jsonではなくjsonpに変更することだと思います.

次の JS フィドルは「動作」しますが、リクエストはサーバーで承認されません: http://jsfiddle.net/cf8S9/

$(document).ready(function() {
$('#button').click(function(){
$.ajax({
      url: 'https://api2.panopta.com/v2/monitoring_node/41',
      type: 'GET',
      dataType: 'jsonp',
      success: function() { alert('hello!'); },
      error: function() { console.log(arguments);alert('boo!'); },
      beforeSend: setHeader
  });
});
function setHeader(xhr) {
    //extra stuff from REST CLIENT
    xhr.setRequestHeader('Authorization', 'ApiKey nGhhAjGshbOu4dhLYvGY');
} });
于 2013-06-18T22:35:42.647 に答える