zoukankan      html  css  js  c++  java
  • jquery Ajax跨域调用WebServices方法

    由于公司需要开发一个手机页面,想提供给同事直接在手机上可以查询SAP资料。数据需要使用js调用webserver来获取。

    因为初次使用Jquery调用Webserver,所以期间并不顺利。测试调用Webserver在本机成功,但传到服务器就不能调用成功,后面才知道原来是不支持跨域访问。花了几天的时间才解决该问题。下面记录一下跨域调用的核心方法。

    本域调用方法:

    <script type="text/javascript">
    
    window.onload = function () {
    
    //var data = '{"name":"test"}';
    
    var options = {
    
    namespace: 'http://tempuri.org/',
    
    method: 'HelloWorld',
    
    contentType: 'application/json; charset=utf-8',
    
    dataType: 'json',
    
    data: data,
    
    success: function (msg) {
    
    alert(msg);}
    
    };
    
    webservice('http://localhost/mobile/webs/demo.asmx', options);
    
    };
    
    </script>

    Webservers代码:

    <%@ WebService Language="C#" Class="WebServiceDemo" %>
    
    using System;
    
    using System.Web;
    
    using System.Web.Services;
    
    using System.Web.Services.Protocols;
    
    [WebService(Namespace = "http://www.guru4.net/", Description = "Webservice dimostrativo per JavaScript SOAP Client")]
    public class WebServiceDemo : WebService
    {
    [WebMethod(Description = "Hello World!")]
    public string HelloWorld(){
    return "Hello World!"; } }

    以上方法仅适用于同域访问。

    跨域调用:

    1、调用jquery文件:

    <script type="text/javascript" src="js/jquery.js"></script>

    2、跨域调用方法:

    <script type="text/javascript">
    var
    dataStr = "name="+s_name+"&id="+s_id $.ajax ({ type:"get", url:"http://itcolin.com/mobile/ demo.asmx/get_name", dataType: "jsonp", jsonp: 'jsoncallback', data:dataStr, /*直接弹窗提示调用结果*/ success: function (json) {alert(JSON.stringify(json));}, /*如果调用不成功,输出错误提示*/ error: function (x, e) { alert("Error:" + x.responseText");} });
    </script>

    Webservices注意事项:

    为确保jquery能正常调用,WebServices输出方式请参考以下。(类型为void)

    <%@ WebService Language="C#" Class="WebServiceDemo" %>
    using System;
    using System.Web;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    
    [WebService(Namespace = "http://www.guru4.net/", Description = "Webservice dimostrativo per JavaScript SOAP Client")]
    public class WebServiceDemo : WebService
    {
        [WebMethod]
        public void get_str()
        {
            string rtnstr = "{name:'test','id':'001'}";
            System.Web.HttpContext.Current.Response.ContentType = "application/json;charset=utf-8";
            string jsonCallBackFunName = string.Empty;
            jsonCallBackFunName = HttpContext.Current.Request.Params["jsoncallback"].ToString();
            System.Web.HttpContext.Current.Response.Write(jsonCallBackFunName + "(" + rtnstr +")");
            System.Web.HttpContext.Current.Response.End();
        }
    }
    博客地址:http://www.cnblogs.com/colinliu/
    博客版权:本文以学习、记录、分享为目的。欢迎大家转载,但务必注明原文地址,谢谢合作!
  • 相关阅读:
    获得自动增长的MySQL主键
    HTTP协议状态码的含义
    HttpServletResponse接口
    http header详解
    ORACLE中大数据量查询实现优化
    amqp rabbitMQ docker-composer
    阿里云OSS上传Invalid Object Name错误
    PHP7**幂运算执行顺序
    MySQL join 连表查询索引问题
    Composer改阿里国内镜像
  • 原文地址:https://www.cnblogs.com/colinliu/p/4807682.html
Copyright © 2011-2022 走看看