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 相关文章推荐
使用sockets:从新闻组中获取文章(三)
Oct 09 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
Jan 11 PHP
PHP写的求多项式导数的函数代码
Jul 04 PHP
header导出Excel应用示例
Jan 24 PHP
windows7下php开发环境搭建图文教程
Jan 06 PHP
php去除字符串中空字符的常用方法小结
Mar 17 PHP
php中ob_flush函数和flush函数用法分析
Mar 18 PHP
PHP5.2下preg_replace函数的问题
May 08 PHP
CI框架扩展系统核心类的方法分析
May 23 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
Apr 21 PHP
基于PHP实现用户在线状态检测
Nov 10 PHP
PHP7 参数处理机制修改
Mar 09 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基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
jQuery使用fadein方法实现渐出效果实例
2015/03/27 Javascript
基于JavaScript实现瀑布流布局(二)
2016/01/26 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
JavaScript实现移动端轮播效果
2017/06/06 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
Three.JS实现三维场景
2018/12/30 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
[01:00:53]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Secret
2018/03/30 DOTA
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
详解Python locals()的陷阱
2019/03/26 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
Python3 元组tuple入门基础
2020/02/09 Python
python_mask_array的用法
2020/02/18 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
CSS 说明横向进度条最后显示文字的实现代码
2020/11/10 HTML / CSS
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
中秋节晚会开场白
2015/05/29 职场文书
毕业班班主任工作总结2015
2015/07/23 职场文书
爱国教育主题班会
2015/08/14 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python
SQL Server使用T-SQL语句批处理
2022/05/20 SQL Server