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代码包装修正版
Mar 15 PHP
简单的PHP留言本实例代码
May 09 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
Feb 21 PHP
php-perl哈希算法实现(times33哈希算法)
Dec 30 PHP
ThinkPHP实例化模型的四种方法概述
Aug 22 PHP
php微信公众开发之获取周边酒店信息的方法
Dec 22 PHP
php实现批量上传数据到数据库(.csv格式)的案例
Jun 18 PHP
基于PHP-FPM进程池探秘
Oct 17 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 PHP
php设计模式之装饰模式应用案例详解
Jun 17 PHP
thinkPHP5.1框架中Request类四种调用方式示例
Aug 03 PHP
php写入txt乱码的解决方法
Sep 17 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 中的一些经验积累
2006/10/09 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
Nodejs中自定义事件实例
2014/06/20 NodeJs
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
快速掌握Node.js环境的安装与运行方法
2016/02/16 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
jQuery设置图片等比例缩小的方法
2017/04/29 jQuery
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
Python类的专用方法实例分析
2015/01/09 Python
Python进程通信之匿名管道实例讲解
2015/04/11 Python
Python中用Spark模块的使用教程
2015/04/13 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
Python登录系统界面实现详解
2019/06/25 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
医院实习接收函
2014/01/12 职场文书
创业资金计划书
2014/02/06 职场文书
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
数控机床专业自荐信
2014/05/19 职场文书
求职简历自荐信怎么写
2015/03/26 职场文书
《角的度量》教学反思
2016/02/18 职场文书
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android