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的memcached客户端memcached
Jun 14 PHP
php将时间差转换为字符串提示
Sep 07 PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 PHP
删除html标签得到纯文本可处理嵌套的标签
Apr 28 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
Oct 23 PHP
laravel安装zend opcache加速器教程
Mar 02 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
Jan 22 PHP
PHP strip_tags保留多个HTML标签的方法
May 22 PHP
Nginx环境下PHP flush失效的解决方法
Oct 19 PHP
简单实现php上传文件功能
Sep 21 PHP
TP5.0框架实现无限极回复功能的方法分析
May 04 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
NOT NULL 和NULL
2007/01/15 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
JavaScript实现自己的DOM选择器原理及代码
2013/03/04 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
jQuery获取checkboxlist的value值的方法
2015/09/27 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
Ionic默认的Tabs模板使用实例
2016/08/29 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
vue如何获取自定义元素属性参数值的方法
2019/05/14 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
Python的CGIHTTPServer交互实现详解
2018/02/08 Python
浅谈Pandas 排序之后索引的问题
2018/06/07 Python
python实现输入数字的连续加减方法
2018/06/22 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
2018/12/24 Python
对pandas处理json数据的方法详解
2019/02/08 Python
Pycharm保存不能自动同步到远程服务器的解决方法
2019/06/27 Python
使用Python函数进行模块化的实现
2019/11/15 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
计算机专业推荐信范文
2013/11/27 职场文书
幼儿园毕业教师感言
2014/02/21 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
中国梦党课学习心得体会
2016/01/05 职场文书
初中历史教学反思
2016/02/19 职场文书