Mr_*_*een 3 asp.net ajax jquery web-services
我是网络服务的新手.在我的项目中,我连接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);
}
});
}
Run Code Online (Sandbox Code Playgroud)
网络服务(网址:12015)
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<Categories> GetCategories()
{
//Code
}
Run Code Online (Sandbox Code Playgroud)
在问这里之前我已经通过这个链接(不能理解)
编辑:
从这篇文章得到了替代答案.
想象一下,当您的站点和Web服务在两个不同的项目中运行时,您打破了同源策略.
将Web服务和网站移动到同一个项目中它应该可以工作.
你的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);
}
});
}
Run Code Online (Sandbox Code Playgroud)
op位仅用于在Web浏览器中进行测试.删除它,你应该是好的.
PS @andyb公平地提出了这个答案,但不清楚这是不是问题! UPDATE
今天在这周围做了一些jiggery pokery,我已经澄清了一些我认为我会分享的观点.你必须要POST一个.asmx服务,你不能做这个跨域.你可以GET在跨域挖掘,但不是POST这样,这就是我认为的路径问题.
您可以启用GET,请参阅如何通过GET调用ASMX Web服务?.但这似乎是一个坏主意,因为它会让你的网络服务暴露给所有人!
| 归档时间: |
|
| 查看次数: |
24818 次 |
| 最近记录: |