ダッシュボードのクロスドメインAJAXとjquery
-
05-09-2019 - |
質問
こんにちは皆さん、ようにウィジェット、アップルのダッシュボードや思いに問題がようとしているデータからサーバーを使用jqueryのajax機能です。ここでの私のjavascriptコード:
$.getJSON("http://example.com/getData.php?act=data",function(json) {
$("#devMessage").html(json.message)
if(json.version != version) {
$("#latestVersion").css("color","red")
}
$("#latestVersion").html(json.version)
})
およびサーバーの反応がこのjson:
{"message":"Hello World","version":"1.0"}
何らかの理由が、この分野のウィジェットのない変化します。からのデバッグ、せっかくのウィジェットなものを請求をサーバーでの思いがリンゴなどの外部URLをブロックします。しかできない真のもので、多くのウィジェット電話用宅内へのアップデートの有無をチェック.
いいアイデアはどのようなきが悪いのでしょうか。
編集:また、このコードのコンビニエンスストアでアプローチにはサファリがあります。
ご要望によりLucaら、これがPHPとJavascriptのコード行っ
PHP:
echo $_GET["callback"].'({"message":"Hello World","version":"1.0"});';
Javascript:
function showBack(event)
{
var front = document.getElementById("front");
var back = document.getElementById("back");
if (window.widget) {
widget.prepareForTransition("ToBack");
}
front.style.display = "none";
back.style.display = "block";
stopTime();
if (window.widget) {
setTimeout('widget.performTransition();', 0);
}
$.getJSON('http://nakedsteve.com/data/the-button.php?callback=?',function(json) {
$("#devMessage").html(json.message)
if(json.version != version) {
$("#latestVersion").css("color","red")
}
$("#latestVersion").html(json.version)
})
}
解決
にDashcodeをクリック ウィジェットの属性 その るネットワークにアクセス 必ずオプションをチェックします。私は内蔵のものだけを拒否し、このたソリューションとなります。
他のヒント
クロスドメインAjaxをご希望の方にXMLHttpRequest/ActiveXオブジェクト)の現在のパスワードを入力してく当たりの W3C仕様:
本仕様書は含まない 以下の特徴を 考慮、将来のバージョンの この仕様:
- クロスサイトXMLHttpRequest;
しかしが1技術の ajax ご要望のクロスドメイン JSONP, 他のスクリプトタグのページでは、ちょっとサーバの設定をします。
jQuery対応 この, で対応サーバとのこ
{"message":"Hello World","version":"1.0"}
また対応す:
myCallback({"message":"Hello World","version":"1.0"});
myCallback する必要の値の"コールバック関数"パラメータで渡されたの$.getJSON()機能です。だったのPHPを利用したこの作品:
echo $_GET["callback"].'({"message":"Hello World","version":"1.0"});';
アップルは、代わりに外部のURLブロックのいくつかの種類があります。
あなたのInfo.plistでは、trueに設定したキーAllowNetworkAccessを持っている必要があります。
<key>allowNetworkAccess</key>
<true/>
それはダッシュボードのサーバに拘束されていないので、あなたのコードは、Safariで動作し、それは基準が、それは、クロスサイトAJAXを許可しないことで準拠のではありません。それは、クロスサイトAJAXを許可しないことでFFは、標準準拠のISます。
、なぜあなたはDashCodeのコードライブラリでのXMLHttpRequestのセットアップ機能を使用しないでください。 AppleはあなたがサードパーティのJSライブラリをインストールする必要はありませんでこれらを構築しました。私は、JSONのサポートについてはよく分からないが、おそらく、ここで開始することは、より良い方向にあなたを導くでしょう。
興味深いです。私の知る限り、X-ドメインAJAXリクエストを行うために知っているあなたはJSONPデータ型を使用する必要があります。
http://docs.jquery.com/Ajax/jQuery.getJSONする
http://bob.pythonmac.org/アーカイブ/ 2005/12月5日/リモートJSON-JSONP / の
基本的には、自動的に正しい方法の例と、それを置き換えますあなたのクエリ文字列とjQueryにcallback=?
を追加する必要があります:
$.getJSON("http://example.com/getData.php?act=data&callback=?",function(){ ... });
編集:念のために、クエリ文字列の末尾にcallback=?
ビットを置く。