2012-12-27 82 views
3

我是新来的web服务。在我的项目中,当我试图运行时,我连接了Web Service(一切都已准备就绪),我得到了下面的错误。未捕获的SyntaxError:意外的令牌< - 在jQuery中ajax

错误 - >

Uncaught SyntaxError: Unexpected token <

的Web服务和我的网页是在同一个解决方案,但不同的项目。

相关的代码如下:

jQuery的(网址: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服务(网址:12015)

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

之前问我在这里已经通过这link(不能理解它)

编辑:

得到备选答案从这个post

+0

确保您最后没有'<'标签。 – Blender

+0

@Blender不存在..没有代码错误的权利? –

+0

何时发生此错误(在您的AJAX调用或脚本加载后)? – Blender

回答

5

通过您的网站和Web服务在两个不同的项目中运行,可以发现您打破了Same origin policy

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

在今天做了一些关于jiggery pokery,我已经澄清了几点,我想我会分享。你必须POST.asmx服务,你不能做这个跨域。你可以在域之间触发GET,但不会触发POST,所以这是我相信的路由问题。您可以启用GET,请参阅How to call an ASMX web service via GET?。但是,这似乎是一个坏主意,因为它会暴露你的webservice所有和各式各样!

+0

+1抱歉,我无法参与聊天,但这似乎与上述问题中的注释一致:-) – andyb

相关问题