小编典典

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

ajax

我是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);
      }
   });
}

网络服务 (URL:12015)

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

在这里问之前,我已经通过了此链接(无法理解)


阅读 217

收藏
2020-07-26

共1个答案

小编典典

弄清了您违反了相同来源策略的原因,因为站点和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);
      }
   });
}

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

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

今天在此方面做得有点麻烦,我已经澄清了一些我想分享的观点。您必须POST获得.asmx服务,并且无法跨域进行此操作。您可以GET跨域触发,但不能跨域触发,POST因此我认为这是路由问题。

您可以启用GET,请参阅如何通过GET调用ASMX
Web服务?。但这似乎是一个坏主意,因为它将使您的Web服务泛滥成灾!

2020-07-26