여러 분들의 사례를 자세히 살펴보고 문제를 발견했습니다. 우리 모두 알고 있듯이 WebService는 SOAP 프로토콜을 준수합니다. 예제가 모두 JSON 형식으로 매개변수를 전달하는 이유는 무엇입니까? net WebService는 JSON 형식과 호환되는 반면, Java는 표준 WebService이며 JSON과 호환되지 않습니다. 인터넷이 모든 사람에게 해를 끼친 것 같습니다. 그래서 WSDL 파일을 잘 이해하고 예제를 만들어 봤습니다. 아래에는 키 코드만 기재되어 있습니다.
$(function () { $("#btnWs").click(btnAjaxPost); }); function btnAjaxPost(event) { $.ajax({ type: "POST", contentType:"text/xml", url:"http://*****/WebServiceTest/services/HelloWorldService", data:getPostData(),//这里不该用JSON格式 dataType:'xml',//这里设成XML或者不设。设成JSON格式会让返回值变成NULL success: function(xml) { //对结果做XML解析。 //浏览器判断 (IE和非IE完全不同) if($.browser.msie){ $("#result").append(xml.getElementsByTagName("ns1:out")[0].childNodes[0].nodeValue+"<br/>"); } else{ $(xml).find("out").each(function(){ $("#result").append($(this).text()+"<br/>"); }) } }, error: function(x, e) { alert('error:'+x.responseText); }, complete: function(x) { //alert('complete:'+x.responseText); } }); } //定义满足SOAP协议的参数。 function getPostData() { //根据WSDL分析sayHelloWorld是方法名,parameters是传入参数名 var postdata="<?xml version=\"1.0\" encoding=\"utf-8\"?>"; postdata+="<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/\">"; postdata+="<soap:Body><sayHelloWorld xmlns=\"http://tempuri.org/\">"; postdata+="<parameters>"+$("#txtName").val()+"</parameters>"; postdata+="</sayHelloWorld></soap:Body>"; postdata+="</soap:Envelope>"; return postdata; }
WebService에 액세스하기 위한 JQuery 기반의 더 많은 코드(Java [Xfire]에서 액세스 가능)를 보려면 PHP 중국어 웹사이트를 참고하세요!