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 相关文章推荐
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
Jan 15 PHP
用php获取远程图片并把它保存到本地的代码
Apr 07 PHP
PHP中strtotime函数使用方法分享
Jan 10 PHP
PHP使用CURL获取302跳转后的地址实例
May 04 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
PHP框架Laravel插件Pagination实现自定义分页
Apr 22 PHP
PHP实现的登录,注册及密码修改功能分析
Nov 25 PHP
PHP简单实现冒泡排序的方法
Dec 26 PHP
PHP面向对象学习之parent::关键字
Jan 18 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
May 04 PHP
PHP多维数组排序array详解
Nov 21 PHP
PHP工厂模式的日常使用
Mar 20 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
PHP如何编写易读的代码
2007/07/10 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
Zend Framework入门知识点小结
2016/03/19 PHP
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
2016/12/08 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
使用express来代理服务的方法
2019/06/21 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
2020/03/04 Javascript
VUE项目axios请求头更改Content-Type操作
2020/07/24 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
python 实现在tkinter中动态显示label图片的方法
2019/06/13 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
python将字典列表导出为Excel文件的方法
2019/09/02 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
结婚保证书范文
2014/04/29 职场文书
消防标语大全
2014/06/07 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书
旅游投诉信范文
2015/07/02 职场文书
golang goroutine顺序输出方式
2021/04/29 Golang
Go gorilla/sessions库安装使用
2022/08/14 Golang