Heim Web-Frontend js-Tutorial javascript与webservice的通信实现代码_javascript技巧

javascript与webservice的通信实现代码_javascript技巧

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

在我这里,我选择将xml直接转换为json,以便后续javascript应用的处理。我使用.net平台构建简单的webservice。
Request.asmx

复制代码 代码如下:

using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Drawing;
using 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 "Hello";
}
[WebMethod]
public byte[] GetPic()
{
picNum = (picNum + 1) % 32;
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类来封装处理webservice(调用AjaxClient类作为操作类),JsonConverter类处理xml数据转换为json数据
common.js(包含JsonConverter类)
复制代码 代码如下:

// JavaScript Document
function $(id)
{
return document.getElementById(id);
}
function GetXmlHttp()
{
if(window.XMLHttpRequest)
return new XMLHttpRequest();
}
var JsonConverter={};
JsonConverter.FlagStack=[];
JsonConverter.ConvertFromXML=function(xmlRootNode)
{
if(!xmlRootNode)
return;
var converter={};
converter.render=function(node,isArrayElement)
{
var returnStr='';
var isArray=false;
if(node.childNodes.length==1)
{
returnStr+=node.nodeName+':' + "'" + node.firstChild.nodeValue + "'" ;
if(node==xmlRootNode)
returnStr='{' + returnStr + '}';
return returnStr;
}
isOneNode=false;
if(node.nodeName.match("ArrayOf*"))
isArray=true;
if(isArray)
returnStr+='[';
else
{
returnStr+='{';
if(!(isArrayElement || xmlRootNode==node))
returnStr=node.nodeName + ':' + returnStr;
}
for(var i=1;i{
returnStr+=this.render(node.childNodes[i],isArray) + ',';
}
returnStr=returnStr.slice(0,-1);
if(isArray)
returnStr+=']';
else
returnStr+='}';
return returnStr;
}
//alert(converter.render(xmlRootNode));
return eval('(' + converter.render(xmlRootNode) + ')');
}



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'})
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Neue Generation der Glasfaser-Breitbandtechnologie – 50G PON Neue Generation der Glasfaser-Breitbandtechnologie – 50G PON Apr 20, 2024 pm 09:22 PM

Im vorherigen Artikel (Link) stellte Xiao Zaojun die Entwicklungsgeschichte der Breitbandtechnologie von ISDN, xDSL bis 10GPON vor. Lassen Sie uns heute über die kommende neue Generation der Glasfaser-Breitbandtechnologie sprechen – 50GPON. █F5G und F5G-A Bevor wir 50GPON vorstellen, sprechen wir zunächst über F5G und F5G-A. Im Februar 2020 förderte ETSI (European Telecommunications Standards Institute) ein festes Kommunikationsnetzwerk-Technologiesystem basierend auf 10GPON+FTTR, Wi-Fi6, optischer 200G-Übertragung/Aggregation, OXC und anderen Technologien und nannte es F5G Netzwerkkommunikationstechnologie (The5thgenerationFixednetworks). F5G ist ein Festnetz

Analyse der Kommunikation zwischen Vue und Server: Umgang mit Netzwerkunterbrechungen Analyse der Kommunikation zwischen Vue und Server: Umgang mit Netzwerkunterbrechungen Aug 10, 2023 am 10:55 AM

Analyse der Vue-serverseitigen Kommunikation: Strategien zum Umgang mit Netzwerkausfällen Einführung: In der modernen Webentwicklung hat sich Vue.js zu einem weit verbreiteten Front-End-Framework entwickelt. Aufgrund der Instabilität der Netzwerkumgebung ist der Umgang mit Verbindungsabbrüchen jedoch ein wichtiges Thema, das wir berücksichtigen müssen. In diesem Artikel wird analysiert, wie mit Netzwerkunterbrechungen in Vue umgegangen wird, und es werden entsprechende Codebeispiele gegeben. 1. Analyse von Verbindungsabbrüchen Wenn die Netzwerkbedingungen gut sind, kann Vue über Ajax-Anfragen oder WebSocket mit dem Server kommunizieren. Aber,

So erreichen Sie eine Punkt-zu-Punkt-Kommunikation über das PHP- und P2P-Protokoll So erreichen Sie eine Punkt-zu-Punkt-Kommunikation über das PHP- und P2P-Protokoll Jul 28, 2023 pm 10:13 PM

So realisieren Sie Punkt-zu-Punkt-Kommunikation über PHP und P2P-Protokoll Mit der Entwicklung des Internets ist die Peer-to-Peer-Kommunikation (P2P) nach und nach zu einer wichtigen Kommunikationsmethode geworden. Im Vergleich zur herkömmlichen Client-Server-Kommunikationsmethode weist die P2P-Kommunikation eine bessere Stabilität und Skalierbarkeit auf. In diesem Artikel stellen wir vor, wie PHP mit dem P2P-Protokoll verwendet wird, um eine Peer-to-Peer-Kommunikation zu erreichen, und stellen entsprechende Codebeispiele bereit. Zunächst müssen wir die Grundprinzipien der P2P-Kommunikation verstehen. Das P2P-Protokoll ermöglicht die direkte Verbindung mehrerer Computer

Die Entwicklungsgeschichte drahtloser Mäuse Die Entwicklungsgeschichte drahtloser Mäuse Jun 12, 2024 pm 08:52 PM

Originaltitel: „Wie wird eine kabellose Maus kabellos?“ „Drahtlose Mäuse sind nach und nach zur Standardausstattung heutiger Bürocomputer geworden. Von nun an müssen wir keine langen Kabel mehr mit uns herumschleppen. Aber wie funktioniert eine kabellose Maus? Heute erfahren wir etwas über die Entwicklungsgeschichte der kabellosen Maus Nr. 1. Wussten Sie, dass die kabellose Maus 1984 die erste kabellose Maus der Welt entwickelte, diese jedoch Infrarot als Signal nutzte? Der Träger soll wie im Bild unten aussehen, scheiterte aber später aus Leistungsgründen. Erst 1994, zehn Jahre später, gelang es Logitech endlich, eine kabellose Maus zu entwickeln, die mit 27 MHz arbeitet. Diese 27-MHz-Frequenz wurde für lange Zeit auch zur kabellosen Maus.

Eine kurze Geschichte der Breitband-Internettechnologie Eine kurze Geschichte der Breitband-Internettechnologie Apr 16, 2024 am 09:00 AM

Im heutigen digitalen Zeitalter ist Breitband für jeden von uns und jede Familie zu einer Notwendigkeit geworden. Ohne sie wären wir unruhig und unruhig. Kennen Sie die technischen Prinzipien hinter Breitband? Welche Veränderungen hat unsere Breitbandtechnologie von der frühesten 56k-„Cat“-Einwahl bis hin zu den aktuellen Gigabit-Städten und Gigabit-Heimen erlebt? Im heutigen Artikel werfen wir einen genaueren Blick auf die „Broadband Story“. Haben Sie diese Schnittstelle zwischen █xDSL und ISDN gesehen? Ich glaube, dass viele Freunde, die in den 70er und 80er Jahren geboren wurden, es gesehen haben müssen und damit sehr vertraut sind. Richtig, das war die Schnittstelle für „Einwahl“, als wir zum ersten Mal mit dem Internet in Kontakt kamen. Das war vor mehr als 20 Jahren, als Xiao Zaojun noch am College war. Um im Internet zu surfen, muss ich

Methoden und Techniken zur Implementierung der Socket-Kommunikation in PHP Methoden und Techniken zur Implementierung der Socket-Kommunikation in PHP Mar 07, 2024 pm 02:06 PM

PHP ist eine häufig verwendete Entwicklungssprache, mit der verschiedene Webanwendungen entwickelt werden können. Neben gängigen HTTP-Anfragen und -Antworten unterstützt PHP auch die Netzwerkkommunikation über Sockets, um eine flexiblere und effizientere Dateninteraktion zu erreichen. In diesem Artikel werden die Methoden und Techniken zur Implementierung der Socket-Kommunikation in PHP vorgestellt und spezifische Codebeispiele angehängt. Was ist Socket-Kommunikation? Socket ist eine Kommunikationsmethode in einem Netzwerk, mit der Daten zwischen verschiedenen Computern übertragen werden können. von S

Nokia plant, seine Gerätemanagement- und Service-Management-Plattform-Geschäfte für 185 Millionen Euro zu verkaufen Nokia plant, seine Gerätemanagement- und Service-Management-Plattform-Geschäfte für 185 Millionen Euro zu verkaufen Dec 21, 2023 am 08:07 AM

Nokia gab heute den Verkauf seines Gerätemanagement- und Service-Management-Plattformgeschäfts für 185 Millionen Euro an die Lumine Group bekannt, der voraussichtlich im ersten Quartal des nächsten Jahres abgeschlossen wird. Nach unseren Erkenntnissen handelt es sich bei Lumine um ein Kommunikations- und Mediensoftwareunternehmen wurde kürzlich von Constellation Software abgespalten. Im Rahmen der Vereinbarung werden voraussichtlich etwa 500 Nokia-Mitarbeiter zu Lumine wechseln. Nach öffentlichen Informationen wurde das Geschäft mit diesen Plattformen hauptsächlich von Nokia durch seine beiden vorherigen Übernahmen von Motive und mFormation gegründet. Lumine sagte, es beabsichtige, die Marke Motive als eigenständige Geschäftseinheit wiederzubeleben. Lumine sagte, der Kaufpreis beinhalte einen Betrag von bis zu

Der Hauptgipfel des Changbai-Berges kann normal auf das Internet zugreifen: Jilin Mobile und ZTE haben die 2,6G + 700M-Drei-Carrier-Aggregation für die kommerzielle Nutzung mit einer Spitzenrate von mehr als 2,53 Gbit/s abgeschlossen Der Hauptgipfel des Changbai-Berges kann normal auf das Internet zugreifen: Jilin Mobile und ZTE haben die 2,6G + 700M-Drei-Carrier-Aggregation für die kommerzielle Nutzung mit einer Spitzenrate von mehr als 2,53 Gbit/s abgeschlossen Jul 25, 2024 pm 01:20 PM

Laut Nachrichten vom 25. Juli haben Jilin Mobile und ZTE die kommerzielle Nutzung der Drei-Carrier-Aggregation basierend auf dem 2,6G-Frequenzband (100+60M) und dem 700M-Frequenzband (30M) auf dem Hauptgipfel des Changbai-Berges abgeschlossen Die Rate in Feldtests kann mehr als 2,53 Gbit/s erreichen. Beamte wiesen darauf hin, dass der Changbai-Berg einer der zehn berühmtesten Berge Chinas ist. Er ist heute eine nationale AAAAA-Touristenattraktion, ein Welt-Geopark, ein Welt-Biosphärenreservat und das weltweit beste Naturschutzgebiet Erreichen Sie 2,7477 Millionen. Dieses Mal wird 3CC eingesetzt. Es wird den Netzwerkanforderungen der Benutzer weitgehend gerecht. Berichten zufolge hat Jilin Mobile die Führung bei der Fertigstellung des Carrier-Aggregation-Pilotprojekts eines Drei-Carrier-Netzwerks im 2,6G (100+60M) plus 4,9G (100M) Frequenzband Anfang 2024 mit Spitzendownloads übernommen

See all articles