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 相关文章推荐
php采集速度探究总结(原创)
Apr 18 PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 PHP
php数组函数序列之array_search()- 按元素值返回键名
Nov 04 PHP
php中的mongodb select常用操作代码示例
Sep 06 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
Sep 02 PHP
PHP实现一个简单url路由功能实例
Nov 05 PHP
thinkPHP统计排行与分页显示功能示例
Dec 02 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 15 PHP
PHP实现网站应用微信登录功能详解
Apr 11 PHP
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
Mar 14 PHP
详解PHP服务器如何在有限的资源里最大提升并发能力
May 25 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 和 MySQL 基础教程(三)
2006/10/09 PHP
php实现图片缩略图的方法
2016/03/29 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
基于jQuery的表格操作插件
2010/04/22 Javascript
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
js写一个弹出层并锁屏效果实现代码
2012/12/07 Javascript
jQuery判断iframe中元素是否存在的方法
2013/05/11 Javascript
jquery ztree实现下拉树形框使用到了json数据
2014/05/14 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
JS实现将二维数组转为json格式字符串操作示例
2018/07/12 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
2018/09/20 jQuery
iview同时验证多个表单问题总结
2018/09/29 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
在Python程序中实现分布式进程的教程
2015/04/28 Python
Python中装饰器兼容加括号和不加括号的写法详解
2017/07/05 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
python实现FTP循环上传文件
2020/03/20 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
毕业生个人求职的自我评价
2013/10/28 职场文书
感恩母亲节演讲稿
2014/05/07 职场文书
学校清明节活动总结
2014/07/04 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书