未捕获的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
。