ホームページ > ウェブフロントエンド > jsチュートリアル > AJAX クロスドメインの問題に対する完璧なソリューション_JavaScript スキル

AJAX クロスドメインの問題に対する完璧なソリューション_JavaScript スキル

WBOY
リリース: 2016-05-16 17:17:58
オリジナル
1023 人が閲覧しました

AJAX が誕生した日から、ドメインを越えて XMLHttprequest オブジェクトをリクエストできないという問題は常に存在していました。これは非常に古典的な質問のようです。これは JavaScript の同一生成元ポリシーによって発生します (ここでは詳しく説明しません)。

おそらく解決策は次のとおりです:

1. 中間層遷移メソッドを使用します (「エージェント」として理解できます):

中間遷移は、明らかに、異なるドメインのサーバーとの AJAX 通信の途中に遷移層を追加することです。この遷移層には、PHP、JSP、C などのネットワーク通信機能を備えた任意の言語を使用できます。中間層から異なるドメインのサーバーへのデータ読み取り操作が実行されます。 asp.net を例に挙げると、別のドメインの asp.net と通信する必要がある場合、クライアントの xmlhttprequest は最初にこのドメインの asp.net にクエリを実行し、次にこのドメインの asp.net が asp.net と通信します。通信用の .net と、このドメインの asp.net 応答出力 (応答) の考え方はおそらく次のとおりです。読者は明確に理解していると思います。

2. <script> タグを使用します </script>

この方法では、<script> タグの src を使用して aspx にクエリを実行し、応答を取得します。これは、<script> タグの src 属性にはクロスドメインの問題がないためです。 </script>

わかりやすくするために例を示します:

コードをコピーします コードは次のとおりです:




Ajax クロスドメインの問題








getDemo.aspx バックグラウンド コード:



コードをコピーします
コードは次のようになります:using System;using System.Collections.Generic;
using System.Linq;
System.Web を使用;
System.Web.UI を使用
System.Web.UI.WebControls を使用;

namespace LearnJS
{
public Partial class getDemo : System.Web.UI.Page {

protected void Page_Load(object sender, EventArgs e)
Response. responseVal='Dylan'");
}
}
}


このメソッドは、x を j に置き換えて、ajaj または xmlHttprequest なしの ajax とも呼ばれます。 > タグは、xml および xmlHttprequest の代わりに使用されます。この方法はちょっと「代替」っぽいですね(笑)。

次に、jQuery を使用して ajax のクロスドメイン問題を解決する方法を見てみましょう:


コードをコピー

コードは次のとおりです。 :

远程服务器端js.txt中的内容为:
var Dylan= {name:"Dylan",email:Dylan@163.com}

笔者感觉这种方式更加简洁。呵呵。当然,读者可以根据实际情况,任意选择实现方式。

怎么样,其实很简单吧,我看到过很多人不愿意去正视ajax所存在的技术瓶颈,其实AJAX更应该是Ajax而不是AJAX,突出第一个A是想强调其实AJAX发扬的是一种异步传输的方法,而不是具体到底使用了哪种技术。

其实,在json数据格式之后,有一种更牛X的“jsonp”,也可以实现ajax的跨域通信。其实jsonp不是一种数据格式,只是对我介绍的第二种方式做了改进。从jQuery1.2 版本开始,jQuery 拥有对 JSONP 回调的本地支持。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート