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

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)

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

编辑:

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

Lia*_*iam 5

想象一下,当您的站点和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服务?.但这似乎是一个坏主意,因为它会让你的网络服务暴露给所有人!