想法:用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 = ‘<?xml version=“1.0” encoding=“utf-8”?>’; 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 + ‘<getResult>’; data = data + ‘<value1>’+v1+’</value1>’; data = data + ‘<value2>’+v2+’</value2>’; data = data + ‘</getResult>’; 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");
}
如果只是提供一个api的话,没必要这么复杂吧?
@liujavamail 刚刚接触node.js,很多东西都不懂,您有什么好的想法可以分享一下吗?
代码首先格式化好了…我怎么记得XMLHTTPRequest
对象方法都是 lowercase 呢
后端就起一个普通的server, http.createServer(function(req, res) { }) 通过req获取前端传的两个值, 做计算之后,通过res返回就行
前端用jquery发起ajax请求,这样会简单一些
不用json用xml吗
我按你的服务端代码写了之后,前端使用soap模块调用,调用失败。 我用.net又写了遍服务端,前端使用soap模块调用,调用成功。 对比URL发现返回的东西不一样,这应该就是问题所在了,我没用node写过webservice,你的服务端代码是不是少东西?