0

jqueryを使用してjavascriptからjax-ws Webサービスを呼び出そうとしています。ここに私の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

ローカル ファイルなどから AJAX 呼び出しを実行している場合、 がありfile:///C:/Users/Paul/Desktop/index.htmlSame origin policyを適用すると、クロス ドメイン呼び出しが行われます。

その場合、ナビゲーターは OPTIONS http 要求をサーバーに送信して、呼び出しを許可するかどうかを尋ねますが、この応答にはCannot handle HTTP method: OPTIONS.

Cross-Origin Resource Sharing 標準は、Web ブラウザーを使用してその情報を読み取ることが許可されているオリジンのセットをサーバーが記述できるようにする新しい HTTP ヘッダーを追加することによって機能します。さらに、ユーザー データに副作用を引き起こす可能性のある HTTP リクエスト メソッド (特に、 以外の HTTP メソッドGET、またはPOST特定の MIME タイプでの使用) の場合、仕様では、ブラウザがリクエストを「プリフライト」し、サポートされているメソッドをHTTPOPTIONS要求ヘッダーを使用してサーバーに送信し、サーバーからの「承認」を受けて、実際の HTTP 要求メソッドを使用して実際の要求を送信します。サーバーは、「資格情報」(Cookie および HTTP 認証データを含む) を要求と共に送信する必要があるかどうかをクライアントに通知することもできます。

HTTP アクセス制御 (CORS)

于 2013-05-06T16:25:28.277 に答える
1

Web サービスが、出力ヘッダーの生成/ContentType が text/xml に設定された xml を返していることを確認してください。IE は気にしませんが、FF と Chrome は気にしませんでした。

Content-type ヘッダーを設定すると解決するはずです。

于 2013-05-06T11:16:01.817 に答える
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 に答える