我正在尝试使用jquery从javascript调用jax-ws webservice。 这是我的HTML代码
<html>
<head>
<title>Calling Web Service from jQuery</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#btnCallWebService").click(function (event) {
var soapRequest = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"+"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema/\" xmlns:core=\"http://core.codon.com/\"><soapenv:Body><core:rectangle><length>" + "12"+ "</length><breadth>" + "10"+ "</breadth></core:rectangle></soapenv:Body></soapenv:Envelope>";
var url11 = "http://localhost:8090/area?wsdl";
$.ajax({
type: "POST",
url: url11,
contentType: "text/xml; charset=\"utf-8\"",
dataType: "xml",
data: soapRequest,
processData: false,
success: processSuccess,
error: processError
});
});
});
function processSuccess(data, status, req) {
if (status == "success")
alert(req.responseText + " @@@" + status);
$("#response").text();
}
function processError(data, status, req) {
alert(req.responseText + " " + status);
}
</script>
</head>
<body>
<h3>
Calling Web Services with jQuery/AJAX
</h3>
<input id="btnCallWebService" value="Call web service" type="button" />
<div id="response" />
</body>
</html>
此代码在IE上运行,并以xml格式获取响应警报。但它没有在mozilla上工作..这个代码有什么问题。能帮帮我吗提前致谢
答案 0 :(得分:1)
确保Web服务返回xml,输出标题生成/ ContentType设置为text / xml。虽然IE不关心,但FF和Chrome确实如此。
设置Content-type标头应解决它。
答案 1 :(得分:1)
如果您正在执行AJAX调用,例如一个本地文件,因此您有file:///C:/Users/Paul/Desktop/index.html
,适用Same origin policy,然后您正在进行跨域调用。
在这种情况下,导航器会向服务器发送OPTIONS http请求,询问是否允许该呼叫,但此响应为Cannot handle HTTP method: OPTIONS
。
跨源资源共享标准的工作原理是添加新的HTTP标头,允许服务器描述允许使用Web浏览器读取该信息的起源集。此外,对于可能对用户数据产生副作用的HTTP请求方法(特别是对于
GET
以外的HTTP方法,或对某些MIME类型使用POST
),规范要求浏览器“预检“请求,使用HTTPOPTIONS
请求标头从服务器请求支持的方法,然后,在服务器”批准“时,使用实际的HTTP请求方法发送实际请求。服务器还可以通知客户端是否应随请求一起发送“凭据”(包括Cookie和HTTP身份验证数据)。
答案 2 :(得分:0)
package com.codon.core;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.BindingType;
import javax.xml.ws.Endpoint;
import javax.xml.ws.ResponseWrapper;
@WebService
//@BindingType(JSONBindingID.JSON_BINDING)
public class Area {
@WebMethod
public double square(@WebParam(name="side") double side)
{
return side * side;
}
@WebMethod
public double rectangle(@WebParam(name="length") double length,@WebParam(name="breadth") double breadth)
{
System.out.println("==="+length+"==="+breadth);
return length * breadth;
}
public static void main(String[] args) {
Area area = new Area();
String url = "http://localhost:8090/area"; // end point of webservice.
System.out.println(url+"?wsdl");
Endpoint.publish(url, area); // publishing the webservice
}
}