-1

jQueryを使用してクロスドメインでWebサービスを呼び出そうとしています。

サービスを呼び出すコードは次のとおりです

 $(document).ready(function () {
        $.ajax({
            type: 'GET',
            async: false,
            contentType: "application/json",
            url: "http://localhost:52136/Service1.svc/Helloworld?callback=func_callbk",
            dataType: "jsonp",
            success: function (data) {
                alert('sucesss')
                alert(data.d);
            },
            error: function (data) {
                alert(data);
            }
        });
    });

    func_callback = function (data) {
        alert(data.data.people[0].id);
    }

サービスから単純な文字列を返しています。

public string HelloWorld()
{
    return "Hello World";
}

サービスが呼び出されましたが、エラーが発生しています

キャッチされない SyntaxError: 予期しないトークン:

Chrome のコンソール ウィンドウで。

ブラウズからサービスを呼び出すときに、次の文字列を取得しています。

{"HelloWorldResult":"Hello World"}

どこが間違っているのか教えてください。

前もって感謝します。

4

1 に答える 1

2

WCF サーバーは、有効にするように構成する必要がありjsonpますCrossDomainScriptAccessEnabled

これは簡単な作業例です

サーバ:

Task.Run(() =>
{
    var uri = new Uri("http://0.0.0.0/test");
    var type = typeof(TestService);
    WebServiceHost host = new WebServiceHost(type, uri);
    WebHttpBinding binding = new WebHttpBinding();
    binding.CrossDomainScriptAccessEnabled = true;
    host.AddServiceEndpoint(type, binding, uri);


    host.Open();

});

[ServiceContract]
public class TestService
{
    [OperationContract]
    [WebGet(ResponseFormat = WebMessageFormat.Json)]
    public string Hello()
    {
        return "Hello World";
    }
}

そして、これはJavaScriptコードです

<html>
<body>
<script src='http://code.jquery.com/jquery-1.10.2.min.js'></script>
<script>
    $(document).ready(function () {
    $.ajax({
        type: 'GET',
        async: false,
        contentType: "application/json",
        url: "http://localhost/test/hello",
        dataType: "jsonp",
        success: function (data) {
            alert(data);
        },
        error: function (data) {
            alert(data);
        }
    });
});

</script>
</body>
</html>

これで、ブラウザからテストできます

http://localhost/test/hello

http://localhost/test/hello?callback=myfunc
于 2013-09-16T07:59:36.763 に答える