最近、Webサービスにアクセスするときにajaxでクロスドメインの問題が発生しました。私はオンラインで情報を検索し、次のようにまとめました(その多くは、要約が良いと思われた他の人からのコピーです)
> ;
まず、私の実装コード:
フロントエンドコード:
$.ajax({ type: "get", url: "http://localhost/Service1.asmx/getElevatorStatusJsonData?jsoncallback=?", dataType: "jsonp", jsonp: "json", data: "", success: function (result) { var data = eval(result); for (var i = 0; i < data.length; i++) { alert(data[i].ID + "--" + data[i].Name); } }, error: function (a, b, c) { alert(c); } });
サーバーコード:
/// <summary> /// 获取状态数据信息 /// </summary> /// <returns></returns> [WebMethod] public void getElevatorStatusJsonData() { List<List<DeviceInfo>> elevatordatas = new List<List<DeviceInfo>>(); List<SendDicdate> searchList = XmlSerializeHelper.XmlDeserializeFromFile<List<SendDicdate>>(@ConfigUtil.servicePath + ConfigUtil.getConfigByKey("xmlPath") + "查询指令信息.xml", Encoding.UTF8); foreach (SendDicdate item in searchList) { string key = item.portno + "-" + item.bordrate + "-" + item.sendtype; List<DeviceInfo> deviceInfoList = (List<DeviceInfo>)Context.Cache.Get(key); elevatordatas.Add(deviceInfoList); } String result = ""; DataContractJsonSerializer json = new DataContractJsonSerializer(elevatordatas.GetType()); using (MemoryStream stream = new MemoryStream()) { json.WriteObject(stream, elevatordatas); result = Encoding.UTF8.GetString(stream.ToArray()); } String jsoncallback = HttpContext.Current.Request["jsoncallback"]; result = jsoncallback + '(' + result + ')'; HttpContext.Current.Response.Write(result); HttpContext.Current.Response.End(); }
c#
上記は、C# サーバーを呼び出すための実装コードです。以下は Java 側です。パラメータは異なる場合がありますが、原則は同じです
java:
String callbackFunName = context.Request["callbackparam"]; context.Response.Write(callbackFunName + "([ { \"name\":\"John\"}])");
PS: クライアントの jsonp パラメータは、URL 経由でパラメータを渡し、パラメータ名を渡すために使用されます。 jsonpCallback パラメータ。平たく言うと、次のようになります。
jsonp: ""
jsonpCallback:""
ちなみに、Chrome ブラウザでは、ヘッダー情報コンテキストを設定することもできます。 .Response.AddHeader("Access-Control-Allow-Origin", "*"); サーバー側でクロスドメインリクエストを実現するため、次の ajax パラメーターを設定する必要はありません
dataType : "jsonp", jsonp: "callbackparam", jsonpCallback:"jsonpCallback1"
通常のajaxリクエストメソッドでデータを取得できます。
他の人が説明したことを読むと、次のような原理が理解できます:
1. よく知られている問題は、Ajax が通常のファイルを直接リクエストするため、クロスドメインの不正アクセスの問題があります。静的ページ、動的 Web ページ、または Web ページである場合、クロスドメイン要求である限り、サービス、WCF は許可されません
2. ただし、js ファイルを呼び出す場合も同様です。 Web ページでは、それがクロスドメインかどうかには影響されません (それだけでなく、「src」を持つすべてのファイルがこの属性のタグにすべてクロスドメイン機能を持っていることもわかりました。たとえば、
3)。現段階では、純粋なWeb側(ActiveXコントロール、サーバー側プロキシ、将来のHTML5 WebSocketなどは含まれません)を介してクロスドメインにアクセスしたい場合、データの可能性は1つだけであると判断できます。クライアントの呼び出しとさらなる処理のために、データをリモート サーバー上の js 形式ファイルにロードしようとすることです。
4. 偶然ですが、複雑なデータを簡潔に記述することができる JSON と呼ばれる純粋な文字データ形式があることはすでにわかっています。さらに優れているのは、JSON も js によってネイティブにサポートされているため、クライアントはこの形式のデータをほぼ希望どおりに処理できることです
5. このようにして、ソリューションの準備が整い、Web クライアントはスクリプトを使用してそれを呼び出すことができます。クロスドメイン サーバーで動的に生成された js 形式のファイル (通常は JSON をサフィックスとして使用) を呼び出すのと同じメソッドです。明らかに、サーバーが JSON ファイルを動的に生成する理由は、クライアントが必要とするデータをロードするためです。 6. クライアントが JSON ファイルの呼び出しに成功すると、残りは必要に応じてデータを処理して表示します。この方法は AJAX によく似ていますが、実際には AJAX と似ています。
7. クライアントがデータを使用しやすくするために、JSONP と呼ばれる非公式の送信プロトコルが徐々に形成されてきました。このプロトコルの重要な点の 1 つは、ユーザーがコールバック パラメーターを渡すことができることです。サーバーがデータを返すとき、サーバーはこのコールバック パラメーターを関数名として使用して JSON データをラップするため、クライアントは返されたデータを自動的に処理する独自の関数をカスタマイズできます。賢い開発者はそれを簡単に考えることができます。サーバーが提供する限り、js スクリプトは動的に生成されるため、呼び出し元はパラメーターを渡してサーバーに「XXX 関数を呼び出す JS コードが必要なので、それを返してください」と伝えることができます。クライアントのニーズに従い、js スクリプトが生成され、応答されました。
コールバック関数が自動的に生成され、success 属性メソッドが呼び出すデータが取得されます。
の実装コードに関連するその他の記事については、 ajax クロスドメイン呼び出し Web サービス、PHP 中国語 Web サイトにご注意ください

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ホットトピック









