getJSON跨域SyntaxError问题分析


Posted in PHP onAugust 07, 2014

昨天写一个功能:点击手机验证的同时获取json端的数据。

javascript代码如下:

$(".check_mobile").click(function(){
var mobile = $('.mobile').val();
$.getJSON("http://www.test.com/user.php?mobile="+mobile+"&format=json&jsoncallback=?", function(data){
if (data.succ == 1) {
var html = "<input type='hidden' name='cityid' value='"+data.data.cityid+"'><input type='hidden' name='communityid' value='"+data.data.communityid+"'>";
$(".r_m").append(html);
}
});
});

user.php代码如下:

<?php
if($_GET){
$mobile = $_GET['mobile'];
if ($mobile == 'XXXX') {
$user = array(
'city' =>'石家庄',
'cityid' =>'1',
'community' =>'紫晶悦城',
'communityid'=>'1'
);
$sucess = 1;
$return = array(
'succ' =>$sucess,
'data' => $user
);
}else {
$sucess = 2;
$return = array(
'succ' =>$sucess
);
}
echo json_encode($return);
}
?>

相应如下:

问题出来了:

在火狐浏览器中: SyntaxError: missing ; before statement

解决方法如下:

header("Access-Control-Allow-Origin:http:www.test.com");
$b = json_encode($return);
echo "{$_GET['jsoncallback']}({$b})";
exit;

最后完整代码:

<?php
header("Access-Control-Allow-Origin:http:www.test.com");
if($_GET){
$mobile = $_GET['mobile'];
if ($mobile == '18831167979') {
$user = array(
'city' =>'石家庄',
'cityid' =>'1',
'community' =>'紫晶悦城',
'communityid'=>'1'
);
$sucess = 1;
$return = array(
'succ' =>$sucess,
'data' => $user
);
}else {
$sucess = 2;
$return = array(
'succ' =>$sucess
);
}
$b = json_encode($return);
echo "{$_GET['jsoncallback']}({$b})";
exit;
}
?>

如果在 PHP 中少了 header("Access-Control-Allow-Origin:http:www.test.com"); 代码,则会出现

XMLHttpRequest cannot load ''. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' ' is therefore not allowed access.
如果少了 echo "{$_GET['jsoncallback']}({$b})"; 代码

在谷歌浏览器中:Uncaught SyntaxError: Unexpected token :
在火狐浏览器中:SyntaxError: missing ; before statement

PHP 相关文章推荐
海河写的 Discuz论坛帖子调用js的php代码
Aug 23 PHP
php中获得视频时间总长度的另一种方法
Sep 15 PHP
php中使用preg_match_all匹配文章中的图片
Feb 06 PHP
基于php冒泡排序算法的深入理解
Jun 09 PHP
php二维数组合并及去重复的方法
Mar 04 PHP
PHP中Session可能会引起并发问题
Jun 26 PHP
PHP数据库操作Helper类完整实例
May 11 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
Aug 17 PHP
php利用header函数下载各种文件
Aug 24 PHP
phpmailer绑定邮箱的实现方法
Dec 01 PHP
php成功操作redis cluster集群的实例教程
Jan 13 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
Aug 03 PHP
PHP+FastCGI+Nginx配置PHP运行环境
Aug 07 #PHP
PHP生成数组再传给js的方法
Aug 07 #PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
Aug 06 #PHP
PHP编程中的常见漏洞和代码实例
Aug 06 #PHP
Discuz7.2版的faq.php SQL注入漏洞分析
Aug 06 #PHP
PHP中的reflection反射机制测试例子
Aug 05 #PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
Aug 05 #PHP
You might like
JavaScript 基础问答三
2008/12/03 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
2016/07/01 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
2020/02/26 Javascript
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
Python爬虫之网页图片抓取的方法
2018/07/16 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
浅析Python requests 模块
2020/10/09 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
适用于所有创业者的创业计划书
2014/02/05 职场文书
工程材料采购方案
2014/05/18 职场文书
干部个人对照检查材料
2014/08/25 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
民主生活会意见
2015/06/05 职场文书
小学数学教师研修日志
2015/11/13 职场文书