ホームページ ウェブフロントエンド jsチュートリアル JavaScript と webservice_javascript スキル間の通信実装コード

JavaScript と webservice_javascript スキル間の通信実装コード

May 16, 2016 pm 06:13 PM
webservice 通信

私の場合、後続の 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 GetResourceList()
{
return new List(new Resource[] { Resource.CreateResource ("pic1", "jpeg/1.bmp", 0)、Resource.CreateResource("pic2", "jepg/2.bmp", 0)、Resource.CreateResource("pic3", "jpeg/3 .bmp" , 0), Resource.CreateResource("pic4", "jepg/4.bmp", 0) });
}
}


上記は単なる例です簡単なテスト用です。後で JavaScript を使用してさまざまな種類のデータを処理する場合に便利です。
JavaScript の場合、サーバー側にアクセスするには xmlhttprequest オブジェクトを使用する必要があります。ただし、簡略化のため、互換性の問題は考慮していません。 xmlhttprequest オブジェクトを直接使用しました (テスト ブラウザ デバイスとして Chrome ブラウザを使用しました)。このために、AjaxClient クラスを使用して http 操作 (Post メソッド) を実行し、WebService クラスを使用して Web サービスをカプセル化して処理します (AjaxClient クラスを
common.js (JsonConverter クラスを含む)




コードをコピー
コードは次のとおりです。 // JavaScript Document function $ (id)
{
return document.getElementById(id); }
関数 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'})
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

新世代の光ファイバーブロードバンドテクノロジー - 50G PON 新世代の光ファイバーブロードバンドテクノロジー - 50G PON Apr 20, 2024 pm 09:22 PM

前回の記事 (リンク) では、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とサーバー間の通信の分析:ネットワーク切断への対処方法 Vueとサーバー間の通信の分析:ネットワーク切断への対処方法 Aug 10, 2023 am 10:55 AM

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

PHP および P2P プロトコルを通じてポイントツーポイント通信を実現する方法 PHP および P2P プロトコルを通じてポイントツーポイント通信を実現する方法 Jul 28, 2023 pm 10:13 PM

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

ワイヤレスマウスの開発経緯 ワイヤレスマウスの開発経緯 Jun 12, 2024 pm 08:52 PM

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

ブロードバンド インターネット テクノロジーの簡単な歴史 ブロードバンド インターネット テクノロジーの簡単な歴史 Apr 16, 2024 am 09:00 AM

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

PHP でソケット通信を実装するための方法とテクニック PHP でソケット通信を実装するための方法とテクニック Mar 07, 2024 pm 02:06 PM

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

Nokiaはデバイス管理およびサービス管理プラットフォーム事業を1億8,500万ユーロで売却する予定 Nokiaはデバイス管理およびサービス管理プラットフォーム事業を1億8,500万ユーロで売却する予定 Dec 21, 2023 am 08:07 AM

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

長白山の主峰は通常通りインターネットにアクセス可能:吉林モバイルとZTEは商用利用向けに2.6G + 700Mの3キャリアアグリゲーションを完成、ピークレートは2.53Gbps以上 長白山の主峰は通常通りインターネットにアクセス可能:吉林モバイルとZTEは商用利用向けに2.6G + 700Mの3キャリアアグリゲーションを完成、ピークレートは2.53Gbps以上 Jul 25, 2024 pm 01:20 PM

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キャリアネットワークのキャリアアグリゲーションパイロットを完了し、ダウンロード数がピークに達するという点で主導権を握ったという。

See all articles