从前端网页调用服务器方法
发布于 8 年前 作者 cnwuel 5236 次浏览 来自 问答

想法:用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");

}

6 回复

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

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

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

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

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

不用json用xml吗

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

回到顶部