zoukankan      html  css  js  c++  java
  • 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)写的,下载源码

  • 相关阅读:
    Eclipse maven构建springmvc项目
    [转载]Maven初级入门笔记
    NumCPU()在slice中的使用
    126短地址测试
    SVG操作插件:SVG.JS 个人提取部分实用中文文档
    sql联合查询去除重复计算总和
    计算某个月的最后一天
    JQ关于浏览器宽高的获取方式
    js不间断滚动
    DIV嵌套垂直居中
  • 原文地址:https://www.cnblogs.com/luluping/p/1301392.html
Copyright © 2011-2022 走看看