未捕获的SyntaxError:意外的令牌< – 在jQuery ajax中

我是网络服务的新手。 在我的项目中,我连接Web Service(一切都是现成的),当我试图运行时,我得到了以下错误。

错误 – >

Uncaught SyntaxError: Unexpected token <

Web服务和我的页面是相同的解决方案,但不同的项目。

相关代码如下:

jQuery (URL:11761)

  function GetAllCategories() { $.ajax({ url: "http://localhost:12015/myWebService.asmx?op=GetCategories", type: "POST", dataType: "jsonp", data: "{}", contentType: "application/jsonp; charset=utf-8", success: function (data) { var categories = data.d; $.each(categories, function (index, category) { alert(category.CategoryId); }); }, error: function (e) { alert(e.message); } }); } 

网络服务 (url:12015)

 [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public List GetCategories() { //Code } 

在问这里之前我已经通过这个链接 (不能理解)

编辑:

从这篇文章得到了替代答案。

想象一下,当您的站点和Web服务在两个不同的项目中运行时,您打破了同源策略 。

Webservice和网站移动到同一个项目中它应该可以工作。

你的javascript也应该是错误的

 function GetAllCategories() { $.ajax({ url: "http://localhost:12015/myWebService.asmx/GetCategories", type: "POST", dataType: "jsonp", data: "{}", contentType: "application/jsonp; charset=utf-8", success: function (data) { var categories = data.d; $.each(categories, function (index, category) { alert(category.CategoryId); }); }, error: function (e) { alert(e.message); } }); } 

op位仅用于在Web浏览器中进行测试。 删除它,你应该是好的。

PS @andyb公平地提出这个答案不久前,但不清楚这是问题所在! UPDATE

今天在这周围做了一些jiggery pokery,我已经澄清了一些我认为我会分享的观点。 你必须POST.asmx服务,你不能做这个跨域。 你可以跨域而不是POST GET ,所以这是我相信的路线问题。

您可以启用GET ,请参阅如何通过GET调用ASMX Web服务? 。 但这似乎是个坏主意,因为它会让你的网络服务暴露给所有人!

不能直接回答您的问题 – 但以下是解决类似问题所必须做的事情

如何在ASP.Net 2.0中强制数据类型为JSON

问题是没有安装和配置ASP.Net Ajax