js调用WebService(复杂对象传入)[原创]

原创地址:http://longtianyu1.blog.163.com/blog/static/998196520111019315663/

实现原理,通过POST SOAP 1.2协议内容,实现复杂对象的传入

POST /Main.asmx HTTP/1.1
Host: localhost
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <HelloWorld xmlns="http://tempuri.org/">
      <user>
        <UserID>int</UserID>
        <UserName>string</UserName>
      </user>
    </HelloWorld>
  </soap12:Body>
</soap12:Envelope>

WebService User.cs 传入对象

    public class User
    {
        public int UserID { get; set; }
        public string UserName { get; set; }
    }

WebService Main.asmx.cs 服务

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
    [System.Web.Script.Services.ScriptService]
    public class Main : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld(User user)
        {
            return "Hello World" + user.UserName;
        }
    }

HTML页

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="_Script/jquery-1.6.4.js" type="text/javascript"></script>
    <script type="text/javascript">
        function makeSOAP(content) {
            return '<?xml version="1.0" encoding="utf-8"?>'
                + '<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">'
                + '  <soap12:Body>'
                + content
                + '  </soap12:Body>'
                + '</soap12:Envelope>';
        }
        $(function () {
            $.ajax(
            { url: "/Main.asmx",
                type: "POST",
                contentType: "application/soap+xml; charset=utf-8",
                data: makeSOAP('<HelloWorld xmlns="http://tempuri.org/"><user>        <UserID>2</UserID>        <UserName>string</UserName>      </user>    </HelloWorld>'),
                success: function (xml) {
                    $("#info").text($(xml).find("HelloWorldResult").text())
                }
            });
        });
    </script>
</head>
<body>
    <div id="info"></div>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#操作 MongoDB【原创】

MongoDB下载地址&#xff1a;http://www.mongodb.org/downloads Mongo C# Driver驱动下载地址&#xff1a; https://github.com/mongodb/mongo-csharp-driver MongoDB所有语言的驱动列表 LanguagePackagesSourceAPI ReferenceCsource tarballsGitHubAPIC#packagesGitHubAPICso…

React 相关资料

learncodeacademy/react-js-tutorialsMobX 转载于:https://www.cnblogs.com/skating/p/6125178.html

在线安装php,CentOS在线安装PHP|dayblog-天天博客|PHP交流,PHP技术,PHP博客,博客交流,dayblog,blog,天天博客...

1、先安装一些其他依赖yum -y install libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs …

Map-Reduce的逻辑过程

假设我们需要处理一批有关天气的数据&#xff0c;其格式如下&#xff1a; 按照ASCII码存储&#xff0c;每行一条记录 每一行字符从0开始计数&#xff0c;第15个到第18个字符为年 第25个到第29个字符为温度&#xff0c;其中第25位是符号/-00670119909999919500515070000 0043011…

(HDU)1019 --Least Common Multiple(最小公倍数)

描述 一组正整数的最小公倍数&#xff08;LCM&#xff09;是可以被集合中所有数字整除的最小正整数。 例如&#xff0c;5,7和15的LCM为105。输入 输入将包含多个问题实例。 输入的第一行将包含指明问题实例数量的单个整数。 每个实例将由形式为m n1 n2 n3 ... nm的单行组成&…

如何将exe文件在linux下执行,如何在Linux系统下查找可执行文件

可执行文件是指可移植可执行的文件&#xff0c;用于程序的执行&#xff0c;那么Linux下要如何查找可执行文件呢&#xff1f;下面小编就给大家介绍下Linux中查找可执行文件的方法&#xff0c;一起来了解下吧。linux下查找可执行文件ls -F|grep “*”这样就可以了&#xff01;ls …

前端学习(2176):vue-router的路由的嵌套使用

app.vue <template><div id"app"><router-link to"/home">首页</router-link><router-link to"/about">关于</router-link><router-link v-bind:to"/user/userId">用户</router-link&g…

下拉列表项过多会导致浏览器卡死

下拉列表项过多会导致浏览器卡死。 可以采用异步的加载方式&#xff0c;类似手机新闻的推送&#xff0c;定制下拉列表组件&#xff0c;一屏一屏的加载数据到浏览器端。

linux服务器做301跳转,nginx 实现当找不到文件时实现301跳转

server {server_name test.com;rewrite ^/(.*) http://www.test1.com/$1 permanent;}last – 基本上都用这个Flag。break – 中止Rewirte&#xff0c;不在继续匹配redirect – 返回临时重定向的HTTP状态302permanent – 返回永久重定向的HTTP状态301Nginx的重定向用到了Nginx的…

前端学习(2177):vue-router得参数传递

app.vue <template><div id"app"><router-link to"/home">首页</router-link><router-link to"/about">关于</router-link><router-link v-bind:to"/user/userId">用户</router-link&g…

如何进行正确的SQL性能优化

在SQL查询中&#xff0c;为了提高查询的效率&#xff0c;我们常常采取一些措施对查询语句进行SQL性能优化。本文我们总结了一些优化措施&#xff0c;接下来我们就一一介绍。 1.查询的模糊匹配 尽量避免在一个复杂查询里面使用 LIKE %parm1%—— 红色标识位置的百分号会导致相关…

SharpZipLib压缩解压

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using ICSharpCode.SharpZipLib.Zip; namespace Test{ /// <summary> /// 压缩 /// </summary> public class Compress { /// <sum…

前端学习(2178):vue-router得参数传递二

app.vue <template><div id"app"><router-link to"/home">首页</router-link><router-link to"/about">关于</router-link><button click"userClick">用户</button><button clic…

linux sha1sum命令,讲解Linux中校验文件的MD5码与SHA1码的命令使用

md5sum用法&#xff1a;md5sum [选项]... [文件]...显示或检查 MD5(128-bit) 校验和。若没有文件选项&#xff0c;或者文件处为"-"&#xff0c;则从标准输入读取。-b, --binary 以二进制模式读取-c, --check 从文件中读取MD5 的校验值并予以检查-…

saltstack-部署

安装epel源&#xff08;所有主机安装&#xff09; [rootsalt-server /]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo 安装saltmaster安装salt [rootsalt-server /]# yum -y install salt-master client安装 [rootsalt-client-01 /]# yum …

C#预编译选项

#define AAA定义一个预编译选项必须定义在cs代码第一行 #if AAA……#elseif……#endif 也可以在 项目属性——“生成”选项卡上&#xff0c;键入要在“条件编译符号”框中定义的符号&#xff1a;AAA

linux系统登陆问题,Linux之登陆问题

今天早上在使用Linux的时候进入终端输入startx&#xff0c;然后退出图形界面&#xff0c;进入了命令模式&#xff0c;可能是Ubuntu 14.04的问题&#xff0c;不知怎么就没有响应&#xff0c;我就强行重启了一下操作系统&#xff0c;然后进去发现在使用管理员账号登录时一直是重复…