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