0

我正在尝试使用 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 ..这段代码有什么问题。你能帮帮我吗?提前致谢

4

3 回答 3

1

确保 Web 服务向您返回输出标头生成/ContentType 设置为 text/xml 的 xml。虽然 IE 不在乎,但 FF 和 Chrome 不在乎。

设置 Content-type 标头应该可以解决它。

于 2013-05-06T11:16:01.817 回答
1

如果您正在从例如本地文件执行 AJAX 调用,那么您有一个file:///C:/Users/Paul/Desktop/index.html应用同源策略,那么您正在执行跨域调用。

在这种情况下,导航器向服务器发送一个 OPTIONS http 请求,询问这是否允许调用,但此响应带有Cannot handle HTTP method: OPTIONS.

跨域资源共享标准通过添加新的 HTTP 标头来工作,这些标头允许服务器描述允许使用 Web 浏览器读取该信息的源集。GET此外,对于可能对用户数据造成副作用的 HTTP 请求方法(特别是对于POST.带有 HTTPOPTIONS请求标头的服务器,然后,在服务器“批准”后,使用实际的 HTTP 请求方法发送实际请求。服务器还可以通知客户端是否应随请求发送“凭据”(包括 Cookie 和 HTTP 身份验证数据)。

HTTP 访问控制 (CORS)

于 2013-05-06T16:25:28.277 回答
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
}
}
于 2013-05-06T14:19:49.900 回答