由于公司需要开发一个手机页面,想提供给同事直接在手机上可以查询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();
}
}

jquery Ajax跨域调用WebServices方法的更多相关文章

  1. jquery ajax跨域调用

    客户端: //ajax跨域调用的方法 $.ajax({ url:dustUrl+"/screenshot/getDevices.do", type: "get" ...

  2. ASP跨域调用Webservices方法

    仅用于记录与分享,直接贴代码: <script type="text/javascript"> function check(){ var title=$('#titl ...

  3. 以短链服务为例,探讨免AppKey、免认证、Ajax跨域调用新浪微博API

    新浪微博的API官方提供了很多种调用方式,支持编程的,归根结底就是两种: 1.基于Oauth协议,使用Open API.(http://open.weibo.com/wiki/%E6%8E%88%E6 ...

  4. 关于JQuery Ajax 跨域 访问.net WebService

    关于这个 jQuery Ajax跨域访问 WebService 前天整了好几个小时没整明白 今天再看一下 结果突然就顿悟了 1.建一个空webApplication --添加--新建项--web服务( ...

  5. AJAX跨域调用相关知识-CORS和JSONP(引)

    AJAX跨域调用相关知识-CORS和JSONP 1.什么是跨域 跨域问题产生的原因,是由于浏览器的安全机制,JS只能访问与所在页面同一个域(相同协议.域名.端口)的内容. 但是我们项目开发过程中,经常 ...

  6. AJAX跨域调用ASP.NET MVC或者WebAPI服务

    关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案 作者:陈希章 时间:2014-7-3 问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP. ...

  7. JQuery.Ajax + 跨域 (crossDomain) + POST + JSON + WCF RESTful, 5大陷阱和解决方案

    JQuery.Ajax + 跨域 (crossDomain) + POST + JSON + WCF RESTful, 5大陷阱和解决方案 最近在开发WSS RESTful服务的时候, 碰到了这些个纠 ...

  8. AJAX跨域调用ASP.NET MVC的问题及解决方案

    AJAX跨域调用ASP.NET MVC的问题及解决方案 问题描述: 解决方法: 只需要在web.config中添加如下标为红色的内容即可: <system.webServer> <h ...

  9. 支持ajax跨域调用的WCF搭建示例

    支持ajax 跨域调用的WCF搭建 1.新建一个"ASP.NET空Web应用程序"项目. 2.新建一个“WCF服务(支持ajax)”. 3.修改WCFAjaxService.svc ...

随机推荐

  1. USACO 3.4 Electric Fence 皮克定理

    题意:在方格纸上画出一个三角形,求三角形里面包含的格点的数目 因为其中一条边就是X轴,一开始想的是算出两条边对应的数学函数,然后枚举x坐标值求解.但其实不用那么麻烦. 皮克定理:给定顶点坐标均是整点( ...

  2. 洛谷P1345 [USACO5.4]奶牛的电信Telecowmunication

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...

  3. PHP Datatype Conversion Safety Risk、Floating Point Precision、Operator Security Risk、Safety Coding Principle

    catalog . 引言 . PHP operator introduction . 算术运算符 . 赋值运算符 . 位运算符 . 执行运算符 . 递增/递减运算符 . 数组运算符 . 类型运算符 . ...

  4. 【项目】用CIFilter得到图片没办法保存到沙盒里面,显示是CGImage为空

    错误代码: if (iOS9) { CGImageRef cgImage = [[CIContext new] createCGImage:outputImage fromRect:outputIma ...

  5. 捉襟见肘之 CoreImage初级自制相机图片效果

    CoreImage.framework /* CoreImage - CoreImage.h Copyright (c) 2014 Apple, Inc. All rights reserved. * ...

  6. NSRunLoop && NSTimer

    新的一年的开始,希望大家一切越来越好,越来越开心快乐!!! 定时器及运行循环 NSRunLoop是iOS消息机制的处理模式 NSRunLoop的主要作用:控制NSRunLoop里面线程的执行和休眠,在 ...

  7. join的理解

    thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B. t.join( ...

  8. python学习笔记-(七)python基础--集合、文件操作&函数

    本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...

  9. MySQL------MySQL与SQLServer数据类型的转换

    MySQL SQLServer

  10. 第一章 基础设施,1.3 阿里视频云ApsaraVideo是怎样让4000万人同时狂欢的(作者:蔡华)

    1.3 阿里视频云ApsaraVideo是怎样让4000万人同时狂欢的 前言 在今年的双11中,双11天猫狂欢夜的直播成为一大亮点. 根据官方披露数据,直播总观看人数超4257万,同时观看人数峰值达5 ...