未捕获的SyntaxError:意外的标记<
我是web服务新手。 在我的项目中,当我试图运行时,我连接了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);
}
});
}
Web服务 (URL:12015)
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<Categories> 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);
}
});
}
操作位仅用于在Web浏览器中进行测试。 删除它,你应该很好。
PS @andyb公平地建议了这个答案,但不清楚这是否是问题所在! UPDATE
今天我已经做了一些关于这个问题的讨论,我澄清了我认为我会分享的几点。 你必须POST
到一个.asmx
服务,你不能做这个跨域。 你可以通过域而不是POST
GET
,所以这是我相信的路由问题。
您可以启用GET
,请参阅如何通过GET?调用ASMX Web服务。 但是,这似乎是一个坏主意,因为它会暴露你的webservice所有和各式各样!
不是你的问题的直接答案 - 但以下是我必须做的解决类似问题
如何在ASP.Net 2.0中强制数据类型为JSON
问题是没有安装和配置ASP.Net Ajax
。