WCF跨域使用Jsonp错误未捕获SyntaxError:意外的令牌:

我试图使用jQuery在跨域调用webservice。

这是我的代码来调用服务

$(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"} 

请让我知道我哪里错了?

提前致谢。

您的WCF服务器应配置为使用CrossDomainScriptAccessEnabled启用jsonp

这是一个简单的工作示例

服务器:

 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代码

       

现在您可以从浏览器进行测试

 http://localhost/test/hello 

 http://localhost/test/hello?callback=myfunc