JavaScript と webservice_javascript スキル間の通信実装コード
私の場合、後続の JavaScript アプリケーションによる処理のために、xml を直接 json に変換することにしました。 .netプラットフォームを使用して単純なWebサービスを構築しています。
Request.asmx
using System;
System.IO を使用;
System.Collections.Generic を使用;
System.Web を使用;サービス;
System.Web.Services.Protocols を使用;
System.Drawing.Imaging を使用;
namespace NightKidsServices
{
///
/// Service1 の概要
///
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1 )]
[ToolboxItem(false)]
public class TestService :WebService
{
private static int picNum = -1
[WebMethod]
public Resource GetResource( )
{
return Resource.CreateResource("pic2", "asdfasd", 0);
}
[WebMethod]
public string HelloWorld()
{
return "こんにちは" ;
}
[WebMethod]
public byte[] GetPic()
{
picNum = (picNum 1)
Image image = Image.FromFile( this.Server .MapPath("jpeg/" (picNum 1).ToString() ".bmp"));
MemoryStream mem=new MemoryStream();
image.Save(mem, ImageFormat.Jpeg);
return mem.GetBuffer();
}
[WebMethod]
public List
{
return new List
}
}
上記は単なる例です簡単なテスト用です。後で JavaScript を使用してさまざまな種類のデータを処理する場合に便利です。
JavaScript の場合、サーバー側にアクセスするには xmlhttprequest オブジェクトを使用する必要があります。ただし、簡略化のため、互換性の問題は考慮していません。 xmlhttprequest オブジェクトを直接使用しました (テスト ブラウザ デバイスとして Chrome ブラウザを使用しました)。このために、AjaxClient クラスを使用して http 操作 (Post メソッド) を実行し、WebService クラスを使用して Web サービスをカプセル化して処理します (AjaxClient クラスを
common.js (JsonConverter クラスを含む)
コードをコピー
関数 GetXmlHttp()
{
if(window.XMLHttpRequest)
return new XMLHttpRequest() ;
}
var JsonConverter={}; [];
JsonConverter.ConvertFromXML=function(xmlRootNode)
{
if(!xmlRootNode)
return;
var Converter={}; ,isArrayElement)
{
var returnStr='';
var isArray=false;
if(node.childNodes.length==1)
{
returnStr =node.nodeName ':' "'" ノード.firstChild.nodeValue "'" ;
if(node==xmlRootNode)
returnStr ='{' returnStr '}'; >isOneNode=false;
if(node.nodeName.match("ArrayOf*"))
isArray=true;
if(isArray)
else
{
returnStr ='{';
if(!(isArrayElement || xmlRootNode==node))
returnStr=node.nodeName ':' returnStr; var i=1;i
returnStr =this.render (node.childNodes[i],isArray) ','>}
returnStr=returnStr.slice(0,-1);
if(isArray)
else
returnStr ='}'; }
//alert(converter.render(xmlRootNode));
return eval('('converter.render(xmlRootNode) ')');
}
< ;SPAN style="FONT-FAMILY: verdana, 'courier new'">
< /SPAN>
AjaxClient.js
コードをコピーします
コードは次のとおりです。
// JavaScript Document
function AjaxClient(url)
{
var xmlhttp=GetXmlHttp();
var request_url=url;
var msgList=new Array();
var isOpen=false;
var isRunning=false;
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==xmlhttp.DONE)
{
isRunning=false;
if (xmlhttp.status==200)
{
msgList.push(xmlhttp.responseXML);
}
}
}
this.Open=function()
{
if(xmlhttp==null)
xmlhttp=GetXmlHttp();
isOpen=true;
if(xmlhttp==null)
isOpen=false;
}
this.Send=function(msg)
{
if (isOpen)
{
xmlhttp.open("POST",request_url,false);
//alert(request_url);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length",msg==null?0:msg.length);
//xmlhttp.setRequestHeader("Keep-Alive","ON");
xmlhttp.send(msg==null?"":msg);
isRunning=true;
}
}
this.GetUrl=function()
{
return request_url.length==0?'':request_url;
}
this.SetUrl=function(url)
{
request_url=url;
}
this.Receive=function()
{
var num=0;
while(!msgList.length)
{
num ;
if (num>=20000)
break;
}
return msgList.length==0?null:msgList.shift();
}
this.Close=function()
{
if(!isRunning)
{
isOpen=false;
xmlhttp=null;
}
}
}
WebService.js
// JavaScript Document
function WebService(url)
{
var ajaxclient=new AjaxClient(null);
var requestUrl=url;
var responseMsg=null;
this.Request=function(requestName,paraList)
{
var url=requestUrl '/' requestName;
var sendData='';
ajaxclient.SetUrl(url);
ajaxclient.Open();
//alert(ajaxclient.GetUrl());
if (paraList!=null)
{
for(var obj in paraList)
sendData =obj.toString() '=' paraList[obj] '&';
sendData=sendData.slice(0,-1);
}
ajaxclient.Send(sendData);
//ajaxclient.Close();
//responseMsg=XMLtoJSON(ajaxclient.Receive());
//for(var obj in responseMsg)
// alert(obj.toString() ':' responseMsg[obj].toString());
responseMsg=ajaxclient.Receive();
}
this.GetResponse=function()
{
return responseMsg;
}
}
调用很简单,只需
var webService=new WebService('http://localhost/NightKidsWebService/Request.asmx');
webService.Request("GetResourceList",null);
alert(JsonConverter.ConvertFromXML(webService.GetResponse().firstChild));
在Request方法里面的第一个参数对应不同的服务名称,第二个参数加入对应的服务的参数表(json格式,例如:{id:123,name:'nightKids'})

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









前回の記事 (リンク) では、Xiao Zaojun が ISDN、xDSL、10GPON に至るブロードバンド技術の発展の歴史を紹介しました。今日は、今後の新世代の光ファイバーブロードバンド技術、50GPON についてお話しましょう。 █F5G と F5G-A 50GPON を紹介する前に、F5G と F5G-A について話しましょう。 2020年2月、ETSI(欧州電気通信標準化協会)は、10GPON+FTTR、Wi-Fi6、200G光伝送/アグリゲーション、OXCなどの技術をベースとした固定通信ネットワーク技術体系を推進し、それを第5世代、すなわちF5Gと名付けました。固定ネットワーク通信技術 (第 5 世代固定ネットワーク)。 F5Gは固定ネットワークです

Vue とサーバー側通信の分析: ネットワーク障害に対処するための戦略 はじめに: 最新の Web 開発では、Vue.js がフロントエンド フレームワークとして広く使用されています。ただし、ネットワーク環境が不安定なため、切断への対応は考慮すべき重要な課題です。この記事では、Vue でネットワーク切断を処理する方法を分析し、対応するコード例を示します。 1. 切断状況の分析 ネットワーク状態が良好な場合、Vue は Ajax リクエストまたは WebSocket を介してサーバーと通信できます。しかし、

PHP および P2P プロトコルを介してポイントツーポイント通信を実現する方法 インターネットの発展に伴い、ピアツーピア (P2P) 通信は徐々に重要な通信方法になってきました。従来のクライアント/サーバー通信方式と比較して、P2P 通信は安定性と拡張性が優れています。この記事では、PHP を P2P プロトコルで使用してピアツーピア通信を実現する方法と、対応するコード例を紹介します。まず、P2P 通信の基本原理を理解する必要があります。 P2P プロトコルにより、複数のコンピュータが直接接続できるようになります。

原題:「ワイヤレスマウスはどのようにしてワイヤレスになるのか?」 》ワイヤレスマウスは今日のオフィスコンピュータの標準機能となり、今後は長いコードを引きずる必要はなくなります。しかし、ワイヤレスマウスはどのように機能するのでしょうか?今日は、No.1 ワイヤレス マウスの開発の歴史について学びます。ワイヤレス マウスは 1984 年に世界初のワイヤレス マウスを開発しましたが、このワイヤレス マウスは信号として赤外線を使用していたことをご存知ですか?キャリアは下の写真のようになると言われていますが、後にパフォーマンス上の理由で失敗しました。ロジクールがついに 27MHz で動作するワイヤレス マウスの開発に成功したのは、10 年後の 1994 年でした。この 27MHz の周波数も、長い間ワイヤレス マウスとして使用されてきました。

今日のデジタル時代において、ブロードバンドは私たち一人一人とすべての家族にとって必需品となっています。それがなければ、私たちは落ち着かず、落ち着かなくなるでしょう。では、ブロードバンドの背後にある技術原理をご存知ですか?最初の 56,000 の「猫」ダイヤルアップから現在のギガビット シティやギガビット家庭まで、ブロードバンド テクノロジーはどのような変化を経験しましたか?今日の記事では、「ブロードバンドストーリー」について詳しく見ていきましょう。 █xDSL と ISDN の間のこのインターフェースを見たことはありますか? 70年代、80年代生まれの友人なら観たことがある、よく知っているという人も多いのではないでしょうか。そう、これは私たちが初めてインターネットに触れたときの「ダイヤルアップ」のインターフェースでした。それは20年以上前、シャオ・ザオジュンがまだ大学生だった頃のことだ。インターネットをサーフィンするために、私は

PHP は、さまざまな Web アプリケーションの開発に使用できる一般的に使用される開発言語です。一般的な HTTP リクエストとレスポンスに加えて、PHP はソケットを介したネットワーク通信もサポートし、より柔軟で効率的なデータ対話を実現します。この記事では、PHPでソケット通信を実装する方法とテクニックを、具体的なコード例を交えて紹介します。ソケット通信とは ソケットは、異なるコンピュータ間でデータを転送できるネットワーク内の通信方法です。 by S

ノキアは本日、デバイス管理およびサービス管理プラットフォーム事業をルミネ・グループに1億8,500万ユーロで売却すると発表し、来年第1四半期に完了する予定である。最近 Constellation Software から独立しました。契約の一環として、約500人のノキア従業員がルミネに加わる予定だが、公開情報によると、これらのプラットフォームの事業は主にノキアが過去2回のMotiveとmFormationの買収を通じて形成したものである。ルミネは、モーティブブランドを独立した事業部門として復活させる意向であると述べ、買収価格には最大で以下の総額が含まれていると述べた。

7月25日のニュースによると、吉林移動とZTEは長白山の主峰で2.6G周波数帯(100+60M)と700M周波数帯(30M)に基づく3キャリアアグリゲーションの商用利用を完了した。フィールドテストでの速度は 2.53Gbps 以上に達する可能性があります。当局者は、長白山は中国のトップ10の名山の一つであり、現在、国家AAAAAの観光名所、世界地質公園、世界生物圏保護区、そして2023年には世界最高の観光客数を獲得する予定であると指摘した。今回、3CCが導入され、ユーザーのネットワークニーズに大きく応えます。報道によると、吉林移動は2024年初めに2.6G(100+60M)と4.9G(100M)の周波数帯で3キャリアネットワークのキャリアアグリゲーションパイロットを完了し、ダウンロード数がピークに達するという点で主導権を握ったという。
