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 chr() ord()中文截取乱码问题解决方法
Sep 08 PHP
php中使用addslashes函数报错问题的解决方法
Feb 06 PHP
Apache下禁止php文件被直接访问的解决方案
Apr 25 PHP
基于PHP一些十分严重的缺陷详解
Jun 03 PHP
php使用ICQ网关发送手机短信
Oct 30 PHP
php学习笔记之面向对象
Nov 08 PHP
cakephp打印sql语句的方法
Feb 13 PHP
PHP生成指定随机字符串的简单实现方法
Apr 01 PHP
php调用自己java程序的方法详解
May 13 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
May 12 PHP
PHP函数积累总结
Mar 19 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
Apr 11 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
处理单名多值表单的详解
2013/06/08 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
解决laravel中日志权限莫名变成了root的问题
2019/10/17 PHP
比较详细的关于javascript 解析json的代码
2009/12/16 Javascript
分页栏的web标准实现
2011/11/01 Javascript
关于跨站脚本攻击问题
2011/12/22 Javascript
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
基于replaceChild制作简单的吞噬特效
2015/09/21 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
JavaScript实现微信号随机切换代码
2018/03/09 Javascript
AngularJS实现动态切换样式的方法分析
2018/06/26 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
2019/09/02 Javascript
vue中添加与删除关键字搜索功能
2019/10/12 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
Django如何实现防止XSS攻击
2020/10/13 Python
super关键字的用法
2012/04/10 面试题
学校开学标语
2014/10/06 职场文书
人事文员岗位职责
2015/02/04 职场文书
党员转正申请报告
2015/05/15 职场文书
公司费用报销管理制度
2015/08/04 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
vue实现滑动解锁功能
2022/03/03 Vue.js
Python实现视频自动打码的示例代码
2022/04/08 Python