jsonp 跨域接收值接不到的解决方法

本文介绍了在使用jsonp进行跨域请求时遇到无法接收到数据的问题,提供了解决方案。首先,前端需要在请求URL中添加`jsoncallback=?`参数,并自定义jsonp回调函数名称。其次,在后端PHP中,正确处理jsonp返回,如设置适当的HTTP头并使用`jsoncallback(.json_encode($data).)`格式来构建返回内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)

传递参数的时候需要加?jsoncallback=?

var url="<?php echo C('url_zhiku')?>";

$.ajax({

type : "get", //jquey是不支持post方式跨域的从

async:false,

url : url+"/Index/getcookies?jsoncallback=?", //跨域请求的URL

dataType : "jsonpbe长约",

//传递给每请求处理程序,用以获得jsonp回调函数名的参数名(默认为:callback)

jsonp: "jsoncallback",

//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名

jsonpCallback:"success_jsonpCallback",

//成功获取跨域服务器上的json数据后,会动态执行这个callback函数

success : function(json){

json;

//console.log(data);

//console.log(json);

}

 

function jsoncallback(json){

var jsona=json;

console.log(jsona);

if(jsona.msg==2){

$('.z_box').hide();

window.location.href=url+'/Login/index';

}else{

$('.z_box').hide();

var title=$('.lie_title').text();

$('#title').html('您预订的课程:'+title);

$('#suc_out4').show();

}

}

(2)

protected function ajaxReturn($data,$type='') {

if(func_num_args()>2) {// 兼容3.0之前用法

$args = func_get_args();

array_shift($args);

$info = array();

$info['data'] = $data;

$info['info'] = array_shift($args);

$info['status'] = array_shift($args);

$data = $info;

$type = $args?array_shift($args):'';

}

if(empty($type)) $type = C('DEFAULT_AJAX_RETURN');

switch (strtoupper($type)){

case 'JSON' :

// 返回JSON数据格式到客户端 包含状态信息

header('Content-Type:application/json; charset=utf-8');

exit(json_encode($data));

case 'XML' :

// 返回xml格式数据

header('Content-Type:text/xml; charset=utf-8');

exit(xml_encode($data));

case 'JSONP':

// 返回JSON数据格式到客户端 包含状态信息

header('Content-Type:application/json; charset=utf-8');

//$handler = isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER');

exit('jsoncallback('.json_encode($data).');');

case 'EVAL' :

// 返回可执行的js脚本

header('Content-Type:text/html; charset=utf-8');

exit($data);

default :

// 用于扩展其他返回格式数据

tag('ajax_return',$data);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值