jQuery 利用 $.getJson() 实现跨域

数据量不大时,跨域的不二之选,而且操作简单,易上手。

a.com/test.html

//这里我假定有一些数据:

var formData = form.serialize();

//这里的jsoncallback 是一个回调函数名 ,是必须的参数

//wrand保证每次请求不一样,兼容IE问题

var url = "http://www.xxx.com/fb/add?wrand="+Math.random()+formData+"&jsoncallback=?";

$.getJSON(url,{"noCache":d},function (info){

  console.log(info);

});

xxx.com/fb/add  -> add.php

<?php

$post = $_POST;

//一些安全处理...略

//$cb 就是传来的回调函数名

$cb = $post[‘jsoncallback‘];

//这里是一些其他操作,比如往某数据库添加数据,我返回一个添加成功或者失败的信息,$res 表示添加成功或者失败

$msg = $res ? "添加成功" : "添加失败";

$status = $res ? 1 : 0;

//json格式 {"status":$status,"data":$msg}

//使用PHP的json_encode()函数

$json = json_encode(array("status"=>$status,"data"=>$msg));

但是这个json对象需要放在上面的回调函数中作为参数返回;

echo $cb."(".$json.")";

这时你会发现前端控制台中打印出了这些反馈信息。

#补充:如果,在a.com/test.html中 有一个验证码要在后台验证,会发现,在IE中始终无法获取这个session,说明IE中跨域导致session丢失了。

解决的办法是,在验证码输出的页面加上以下这句话:

header(‘P3P: CP="ALL ADM DEV PSAi COM OUR OTRo STP IND ONL"‘);
时间: 2024-12-23 02:42:32

jQuery 利用 $.getJson() 实现跨域的相关文章

用JQuery的$.getJSON发起跨域Ajax请求

jQuery中常用getJSON来调用并获取远程的JSON字符串,将其转换为JSON对象,如果成功,则执行回调函数.原型如下: jQuery.getJSON( url, [data], [callback] )  跨域加载JSON数据.伊川县第二中学 url:     发送请求的地址 data : (可选) 待发送key/value参数 callback: (可选) 载入成功时的回调函数 主要用于客户端获取服务器JSON数据.简单示例: 服务器脚本,返回JSON数据: view source p

JQuery的getJSON函数跨域

由于一开始看到“$”等类似符号就头晕,所以注定与PHP和JQuery无缘了,不过自己用JavaScript可不代表其他人也得用,这不,麻烦到了... 两个网站:A.B A站点提供了一个重要的API,由于种种原因,虽然是同一家公司,但原来的代码是不允许任何修改的,原来也没有考虑到后面有其他的站点需要调用: B站点的域名跟A完全不一样,但业务需要,必须拿到A站那个API的返回结果,并且为保证该API数据的准确性,必须是客户端去请求. 解决方法: API地址:http://domain.com:808

jquery下利用jsonp跨域访问实现方法

$.ajax({ async:false, url: '', // 跨域URL type: 'GET', dataType: 'jsonp', jsonp: 'jsoncallback', //默认callback data: mydata, //请求数据 timeout: 5000, beforeSend: function(){ //jsonp 方式此方法不被触发.原因可能是dataType如果指定为jsonp的话,就已经不是ajax事件了 }, success: function (jso

$.ajax和$.getJson解决跨域请求

写js时总是会遇到跨域请求的问题,现在了解了两种方法,记录之: 1)使用$.ajax,但是返回数据类型要设置为jsonp,示例: $.ajax({ type: 'get', contentType: "application/json; charset=utf-8", url: "http://localhost:8080/aqi/getCityList.php", dataType: 'jsonp', headers: { Accept: "applic

jquery中ajax处理跨域的三大方式

一.处理跨域的方式: 1.代理 2.XHR2 HTML5中提供的XMLHTTPREQUEST Level2(及XHR2)已经实现了跨域访问.但ie10以下不支持 只需要在服务端填上响应头: ? 1 2 3 header("Access-Control-Allow-Origin:*"); /*星号表示所有的域都可以接受,*/ header("Access-Control-Allow-Methods:GET,POST"); 3.jsonP 原理: ajax本身是不可以跨

利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据

1:跨域请求handler一般处理程序 using System; using System.Collections.Generic; using System.Web; using System.Web.Services; namespace CrossDomain { /// <summary> /// $codebehindclassname$ 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.

你不知道的jQuery Item11 -- ajax jsonp跨域方法详解

文章从JSON和JSONP区别开始讲起,用实例来对比他们之间的不同之处,然后详细讲解了jQuery中的ajax jsonp的使用并给出了示例及详细参数说明. 1.JSON和JSONP JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用于在浏览器和服务器之间交换信息. JSONP(JSON With Padding),就是打包在函数调用中的的JSON(或者包裹的JSON),你要跨域请求别人的东西,你肯定要包裹起来,不要污染了别人的东西,把Json数据包裹

JQuery - Ajax和Tomcat跨域请求问题解决方法!

在JQuery里面使用Ajax和Tomcat服务器之间进行数据交互,遇到了跨域请求问题,无法成功得到想要的数据! 错误信息部分截图: 通过错误信息判断知道已经发生在Ajax跨域请求问题了! 当前Tomcat服务器,是一个已经存在的工程,有APP同这部分代码一同工作.我所做的是开发另外一款手机应用程序,并且使用已有的接口!在这种情况下,实现Ajax跨域请求,而且对目前源代码影响越小越好!怎样达到这样的目标?最终通过为Tomcat添加过滤器方式完成! 由于此项目是商业项目,服务器并不是我管理,所以无

jquery中的jsonp跨域调用

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