使用JSON从AJAX和JQuery调用简单的Web服务(.asmx文件) - 解析错误

时间:2010-09-06 10:01:31

标签: .net jquery ajax web-services json

尝试将所有这些技术结合在一起迈出了我的第一步......我有一些小事...... 这是我的服务器端:

[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string simplestMethod()
{
  return "Simplest method returned";
}

这是我的客户方:

 $(document).ready(function(){
   $("a").click(function(event){     
      $.ajax({
      type: "POST",
      url: "http://localhost:53346/d2/TAPI.asmx/simplestMethod",
      data: "{}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function (data) {
       alert(data.d);
      },
      error: function (XMLHttpRequest, textStatus, errorThrown) {
       alert("Error Occured!" +" | " + XMLHttpRequest +" | " + textStatus +" | " + 
       errorThrown );
      }
   });
  });
 });

结果是一个警告说:
发生了错误! | [object XMLHttpRequest] | parseerror |未定义。
什么解析失败了,为什么?
我应该提一下,直接调用WS方法确实有效。
非常感谢!

2 个答案:

答案 0 :(得分:4)

您的代码在某个可疑地点看起来很不错:url。您应该将url替换为"TAPI.asmx/simplestMethod""/d2/TAPI.asmx/simplestMethod"

此外,如果您想研究如何使用参数调用Web方法或从Web方法返回更复杂的数据,请查看How do I build a JSON object to send to an AJAX WebService?asmx web service, json, javascript/jquery?Can I return JSON from an .asmx Web Service if the ContentType is not JSON?。如何解决来自Web方法内部异常的错误消息,请参阅Get xhr object in vb.net while ajax calling fails

答案 1 :(得分:2)

如果要在jquery中使用WebMethod,则必须将此标记添加到web.config

<configuration>
  <system.web>
    <httpModules>
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </httpModules>
  </system.web>
</configuration>
祝你好运