jquery跨域调用wcf

使用jquery跨域调用wcf服务的时候会报如下错误

 1         $.ajax({
 2             url: ‘http://localhost:28207/Service1.svc/GetData‘,
 3             method: ‘get‘,
 4             dataType: ‘json‘,
 5             data: { value: val },
 6             success: function (data) {
 7                 $("label").text("success: " + data);
 8             },
 9             error: function (err) {
10                 $("label").text("error: " + err);
11             }
12         });

之前一直以为跨域的请求只要调用方做修改就可以的,实际解决问题的时候发现服务端wcf的binding配置也需要支持

一、wcf服务端配置

  1. 需要将配置中webHttpBinding属性crossDomainScriptAccessEnabled置为true

  2. 接口得支持GET方式调用 ,因为jquery跨域请求时候的方式就是get

 1  [ServiceContract]
 2     public interface IService1
 3     {
 4         // 跨域调用的话得支持GET方式
 5         [WebInvoke(Method = "GET",
 6             RequestFormat = WebMessageFormat.Json,
 7             ResponseFormat = WebMessageFormat.Json,
 8             BodyStyle = WebMessageBodyStyle.Bare,
 9             UriTemplate = "/GetData?value={value}")]
10         string GetData(int value);
11     }

二、客户端调用

以jsonp的方式调用,表明是跨域请求

 1    var val = $("#txtValue").val();
 2         //  jquery跨域调用jsonp方式
 3         //  jquery会自动填充callback=?中的问号
 4         //  实际调用时请求的url是 http://localhost:28207/Service1.svc/GetData?callback=jQuery1102023912459355778992_1460275935452&value=321&_=1460275935453
 5
 6         $.ajax({
 7             url: ‘http://localhost:28207/Service1.svc/GetData‘,
 8             method: ‘get‘, //这个可以去掉, 因为jsonp默认就是get方式
 9             dataType: ‘jsonp‘,
10             data: { value: val },
11             success: function (data) {
12                 $("label").text("success: " + data);
13             },
14             error: function (err) {
15                 $("label").text("error: " + err);
16             }
17         });

三、结果

可以看到jquery的jsonp跨域调用自动给我们添加一个 callback参数,提供给服务端回调的。

示例代码

时间: 2024-12-31 03:44:20

jquery跨域调用wcf的相关文章

实现jquery.ajax及原生的XMLHttpRequest跨域调用WCF服务的方法

关于ajax跨域调用WCF服务的方法很多,经过我反复的代码测试,认为如下方法是最为简便的,当然也不能说别人的方法是错误的,下面就来上代码,WCF服务定义还是延用上次的,如: namespace WcfService1 { [ServiceContract] public interface IAddService { [OperationContract] [WebInvoke(Method="GET",RequestFormat=WebMessageFormat.Json, Resp

jQuery跨域调用WebService

jQuery跨域调用WebService举例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 runat=&quo

Jquery跨域调用

今天在项目中须要做远程数据载入并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发现JQuery对于Ajax的跨域请求有两类解决方式,只是都是仅仅支持get方式.各自是JQuery的 jquery.ajax jsonp格式和jquery.getScript方式. 什么是jsonp格式呢?API原文:假设获取的数据文件存放在远程server上(域名不同.也就是跨域获取数据),则须要使用json

Jquery跨域调用后台方法

//前端JS function CallHandlerByJquery() { var url = "http://" + window.location.hostname + "/Helper.ashx?FLAG=2&BIZINST_GUID=276259&callback=?&rand="+Math.random(); $.ajaxSettings.async = false; $.getJSON(url, function (data)

Ajax跨域访问wcf服务中所遇到的问题总结。

工具说明:vs2012,sql server 2008R2 1.首先,通过vs2012建立一个wcf服务项目,建立好之后.再新开一个vs2012 建立web项目,通过jQuery的ajax方法访问服务. 问题:由于web项目和wcf服务,不在同一个端口之中,所以涉及到“跨域”的问题.跨域访问的时候,需要对服务的接口和方法做一定的限定.具体参考:http://www.cnblogs.com/yangbingqi/p/2096197.html 2.解决了跨域问题,我们需要把服务部署到IIS.vs20

jquery ajax jsonp跨域调用实例代码

今天研究了AJAX使用JSONP进行跨域调用的方法,发现使用GET方式和POST方式都可以进行跨域调用,这里简单分享下,方便需要的朋友 客户端代码 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApp.WebForm1" %><!DOCTYPE html P

WCF跨域调用

1  WCf跨域调用  一个用 Jsonp  (这是蒋金楠大神写的一个实例这里把他拷贝过来) 在契约中 [ServiceContract] public interface IEmployees { [WebGet(UriTemplate = "all",ResponseFormat =WebMessageFormat.Json)] IEnumerable<Employee> GetAll(); } public class Employee { public string

Jquery的跨域调用

JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念.当然,究其本质还是通过script标签动态加载js,似乎这是实现真正跨域的唯一方法. getJSON的用法JQuery手册已经写得很详细,参考手册就可以了,很简单.需要指出的一点是getJSON利用的jsonp需要客户端与服务端作出配合. 客户端传递的URL里要包含callback变量,以形如callback=?的形式结尾.(jquery会随机生成一个字符串替换?传递给服务端) 服务端获取客户端传

jquery中的jsonp跨域调用

                                                jquery jsonp跨域调用接口 原文地址:https://www.cnblogs.com/mahmud/p/10131599.html