jquery调用WebService和WebService输出JSON

(环境:vs2008+jquery1.2.3)
发现.net自带的ajax.net使用webservice输出的是json,其中关键的就是在请求时:Content-Type:application/json;utf-8
所以我们只要在POST时加上一个Content-Type:application/json;utf-8就可以了

  $.ajax({
   type: "POST",
   contentType:"application/json;utf-8",
   url: "/Server/PicLib.asmx/HelloWorld",
   success: function(msg){
   var json = eval('(' + msg + ')');
   alert(json.d);}
});


var json = eval('(' + msg + ')');
(这个是把返回的字符值转换成json对象,这样子才能够正常的操作json,这里可以用try来捕捉一下错误,因为如果返回的字符串不是标准的json的话就会出错。)

上面的js要成功运行需要对.net做一下设置让“WebService输出JSON”
修改WebService,导入一个属性

<System.Web.Script.Services.ScriptService()>  

<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class WebService1
    Inherits System.Web.Services.WebService

    <WebMethod()> _
    Public Function HelloWorld(ByVal str As String, ByVal name As String) As String
        Return str & name
    End Function

End Class



在webconfig中添加:

     < httpHandlers >
      
< remove verb = " * "  path = " *.asmx " />
      
< add verb = " * "  path = " *.asmx "  validate = " false "  type = " System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 " />
    
</ httpHandlers >


注意:这个是关键,这样子才能使请求asmx文件时让它输出json格式,刚刚开始时测试了很久都不行。

在vs2008 简体中文版+jquery 1.2.3下通过测试。


在测试过程中“顺便”发现了jq的一个"BUG"
在设置Content-Type时,发现怎么样设置jq总是不理不踩,
查看了一下jq的ajax方法哪一段源码,看到了如下的代码:

             if  ( s.data )
                xml.setRequestHeader(
" Content-Type " , s.contentType);
上面的data是ajax请示的参数,当参数值不为空才设置请求的 Content-Type
我不知道这个到底是不是它的bug,在实际使用的时,你会碰到在调用webservice的一个方法,而这个方法是没有参数时,这样子
果你不想修改jq的源码的话,就在请求时附加一些无用的数据,如:data:"{}",不然jq可是会发“烂咂”(脾气)哦~呵呵

以上的问题还请使用jq的朋友们注意一下。

应朋友们的要求我写了个简单的演示,源码里已写好注释了,请大家查看相关的源码
演示是vs2008(vb)写的,下载源码

转载于:https://www.cnblogs.com/top5/archive/2010/01/30/1660196.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值