CNode

从前端网页调用服务器方法

问答
Ccnwuel发布于10 年前最后回复10 年前6 回复5828 浏览0 收藏

想法:用nodejs搭建一个服务器,包含一个加法计算,对外公布。 从网页端输入两个数字后,在点击‘=’时把输入的两个数字POST到服务端并返回结果到前端。

以下做法是否存在问题呢,请大神帮忙,谢谢! 做法:①搭建服务端代码service.js: var soap = require('soap-server'); function MyTestService() { } MyTestService.prototype.getResult = function(value1, value2) { return parseFloat(value1) + parseFloat(value2); }; var soapServer = new soap.SoapServer(); var soapService = soapServer.addService('testService', new MyTestService()); soapServer.listen(3000); console.log("Web service start"); ②服务开启后,通过URL:“ http://localhost:3000/testService?wsdl”能查看到服务端的wsdl文件。 ③从前端JS中请求服务器 function requestByPost(v1, v2, url) { createXMLHttpRequest(); var data; data = ''; data = data + '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://www.w3.org/2001/12/soap-envelope">'; data = data + 'soap:Body'; data = data + ''; data = data + ''+v1+''; data = data + ''+v2+''; data = data + ''; data = data + '</soap:Body>'; data = data + '</soap:Envelope>'; alert(data);

xmlhttp.onreadystatechange = handleStateChange;
xmlhttp.Open("POST", url, true);
xmlhttp.SetRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlhttp.SetRequestHeader("SOAPAction", getResult);
xmlhttp.Send(data);
alert("send over");

}

查看回复

回复 (6)

L
liujavamail#1·10 年前

如果只是提供一个api的话,没必要这么复杂吧?

C
cnwuel#2·10 年前
引用 liujavamail如果只是提供一个api的话,没必要这么复杂吧?

@liujavamail 刚刚接触node.js,很多东西都不懂,您有什么好的想法可以分享一下吗?

D
DevinXian#3·10 年前

代码首先格式化好了...我怎么记得XMLHTTPRequest对象方法都是 lowercase 呢

L
liujavamail#4·10 年前

后端就起一个普通的server, http.createServer(function(req, res) { }) 通过req获取前端传的两个值, 做计算之后,通过res返回就行

前端用jquery发起ajax请求,这样会简单一些

A
ajaxQWER#5·10 年前

不用json用xml吗

C
coolswitch#6·10 年前

我按你的服务端代码写了之后,前端使用soap模块调用,调用失败。 我用.net又写了遍服务端,前端使用soap模块调用,调用成功。 对比URL发现返回的东西不一样,这应该就是问题所在了,我没用node写过webservice,你的服务端代码是不是少东西?

参与回复
登录后即可参与回复。登录