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 相关文章推荐
BBS(php &amp; mysql)完整版(三)
Oct 09 PHP
文件上传程序的全部源码
Oct 09 PHP
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
php中文本操作的类
Mar 17 PHP
phpmyadmin 3.4 空密码登录的实现方法
May 29 PHP
比较strtr, str_replace和preg_replace三个函数的效率
Jun 26 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
Jun 26 PHP
php数据访问之增删改查操作
May 09 PHP
php框架CodeIgniter主从数据库配置方法分析
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
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
js判断浏览器的比较全的代码
2007/02/13 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
js函数返回多个返回值的示例代码
2013/11/05 Javascript
JQuery结合CSS操作打印样式的方法
2013/12/24 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
详解JavaScript中|单竖杠运算符的使用方法
2016/05/23 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
JS数组去重的6种方法完整实例
2018/12/08 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
Python的一些用法分享
2012/10/07 Python
python制作花瓣网美女图片爬虫
2015/10/28 Python
Python三级菜单的实例
2017/09/13 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
python交互式图形编程实例(二)
2017/11/17 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
NULL是什么,它是怎么定义的
2015/05/09 面试题
秘书行业自我鉴定范文
2013/12/30 职场文书
成绩单家长评语大全
2014/04/16 职场文书
求职信格式要求
2014/05/23 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
医院财务人员岗位职责
2015/04/14 职场文书