シーン
異なるドメイン名を持つ 2 つのサーバー (a.com と b.com) がある場合、インターフェイス b.com/b_return_js.php でデータを取得できます。 もちろん、b.com のページにある場合は、ajax を使用してこのインターフェイスを直接リクエストできますが、a.com のページにリクエストされた場合はどうなるでしょうか。
b_return_js.php のインターフェースコード:
echo 'var userdata = '.json_encode($a).';'; //通常、b.com からのサイト内リクエストの場合、json_encode($a) が直接返されますが、 src 属性を使用してクロスドメインを実現したい場合は、この値を js 変数に割り当てて、スクリプト タグが読み込まれた後にこのデータを取得してページ内で使用できるようにする必要があります。
簡単な実装
a.com の下のページに直接アクセスする簡単な方法があります
このようにして、このインターフェイスによって返されるデータは、a.com ページで直接取得できます。
ただし、ここには欠点があります。このデータは、ページがロードされたときにのみ取得できます。たとえば、ajax を使用して新しいインターフェイス データを取得したい場合は、このデータを取得するのには適していません。部分的なデータ更新の場合、この方法はやや不適切です。
Ajax 風の実装
実際、上記の ajax 風の実装のアイデアは、ajax 条件がトリガーされたときに上記のタグを再生成して、インターフェースからデータを再度取得することですが、実際にはまだ実装するのは少し難しいです(少なくとも私にとっては多大な労力がかかりました)。
コードをアップロード:
a.com/scriptSrc.php ページの下にボタンがあるとします
クリックするたびに、ajax 実装コードと同様に、b.com/b_return_js.php インターフェイスからデータが取得されます:
関数 getData()
{
console.log(ユーザーデータ);
}
$('#ajax_request_from_b').click(function(){
//このスクリプト タグは毎回再ロードする必要があるため、クロスドメイン サーバーからデータを確実に取得できるようにするために、毎回新しいスクリプト タグを再生成する必要があります
If(ele && ele.parentNode)
{
//ele.parentNode.removeChild(ele); //この種の削除では、メモリから ele を完全に削除することはできませんが、dom 内の位置が削除されるだけです
for (ele の var プロパティ) {
ELE [プロパティ]を削除します。
}
}
ele = document.createElement('script') //これは新しい ele
です。
CreateScript();
Document.getElementsByTagName("head")[0].appendChild(ele);
ele.onload = function(){getData()}; // スクリプト要素のロード後にユーザーデータを取得できます。毎回、ユーザー情報がランダムな順序で取得されます。
});
このように、ボタンをクリックするたびに、インターフェースからデータを再度取得します。これは、少しありがたいことですが、ajax と似ています。まだアイデアです。