Javascript 在soap请求中获取NULL而不是字符串值
我有一个移动应用程序,它通过ajax与我的soap web服务通信 用户必须插入两个字段才能登录uname和password,并在按下login键时输入 按钮,调用javascript方法通过ajax将数据发布到web服务。 我可以从html页面获取输入值,但是当我调试web服务时,我看到接收到的参数是空的,而不是用户输入的值,我不知道为什么Javascript 在soap请求中获取NULL而不是字符串值,javascript,jquery,ajax,web-services,soap,Javascript,Jquery,Ajax,Web Services,Soap,我有一个移动应用程序,它通过ajax与我的soap web服务通信 用户必须插入两个字段才能登录uname和password,并在按下login键时输入 按钮,调用javascript方法通过ajax将数据发布到web服务。 我可以从html页面获取输入值,但是当我调试web服务时,我看到接收到的参数是空的,而不是用户输入的值,我不知道为什么 function login() { var uname = document.getElementById('uname').value; va
function login()
{
var uname = document.getElementById('uname').value;
var pass = document.getElementById('password').value;
var soapRequest =
'<?xml version="1.0" encoding="utf-8"?> \
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\
xmlns:xsd="http://www.w3.org/2001/XMLSchema"\
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">\
<soap:Body>\
<Login xmlns="http://service.webservice.org/">\
<Name>' + uname + '</Name>\
<Password>' + pass + '</Password>\
</Login>\
</soap:Body>\
</soap:Envelope>';
$.ajax({
type : "POST",
url : "http://localhost:8080/WebService/Service",
contentType: "text/xml",
dataType: "xml",
data: soapRequest,
success : function(data, status, req, xml, xmlHttpRequest, responseXML)
{
var xmlText = $(req.responseXML).find('LoginResult').text();
alert(xmlText);
},
error: function ()
{
alert("error");
}
});
答案是,我们需要声明在soap请求中调用的方法的名称空间 因此,在您将web服务部署到glassfish或它创建的其他服务器之后 WSDL文件和每个方法都有名称空间 所以soap请求应该是这样的
var soapRequest =
'<?xml version="1.0" encoding="utf-8"?> \
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\
xmlns:xsd="http://www.w3.org/2001/XMLSchema"\
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">\
<soap:Body>\
<ns2:Login xmlns:ns2="http://service.webservice.org/">\
<Name>' + uname + '</Name>\
<Password>' + pass + '</Password>\
</ns2:Login>\
</soap:Body>\
</soap:Envelope>';
ns2是默认情况下创建的名称空间,您可以自己设置名称空间>我可以从html页面获取输入值。确认那些ID为uname和password的元素在页面上实际存在。它们在html页面上找到,我使用它们将js函数链接到html页面,以便获取输入值。。即使我在login方法的前两行之后使用alert方法,我也可以看到输入值i正在变为null,即使我传递了一个硬编码字符串,而不是我看到的'uname'和'pass'参数。您在服务器上得到的是null,而不是客户端。这更多的是一个如何从JavaScript执行soap的问题。。我不知道为什么。。soap请求没有问题