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作的文本留言本的例子(四)
Oct 09 PHP
php 过滤器实现代码
Aug 09 PHP
根据ip调用新浪api获取城市名并转成拼音
Mar 07 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
ucenter通信原理分析
Jan 09 PHP
PHP获取文件相对路径的方法
Feb 26 PHP
php开发中的页面跳转方法总结
Apr 26 PHP
php示例详解Constructor Prototype Pattern 原型模式
Oct 15 PHP
PHP线程的内存回收问题
Jul 08 PHP
php微信公众平台示例代码分析(二)
Dec 06 PHP
php获取客户端IP及URL的方法示例
Feb 03 PHP
PHP const定义常量及global定义全局常量实例解析
May 28 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
一些星际专用术语解释
2020/03/04 星际争霸
PHP5 安装方法
2007/01/15 PHP
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
PHP开发微信支付的代码分享
2014/05/25 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
基于javascript 闭包基础分享
2013/07/10 Javascript
javascript计时器事件使用详解
2014/01/07 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
2016/09/28 Javascript
AngularJS学习第一篇 AngularJS基础知识
2017/02/13 Javascript
vue-router相关基础知识及工作原理
2018/03/16 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
python下载文件时显示下载进度的方法
2015/04/02 Python
python中defaultdict的用法详解
2017/06/07 Python
python决策树之CART分类回归树详解
2017/12/20 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
Python3 io文本及原始流I/O工具用法详解
2020/03/23 Python
python打包生成so文件的实现
2020/10/30 Python
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
Collection和Collections的区别
2016/05/02 面试题
JSP&Servlet技术面试题
2015/05/21 面试题
俄语专业职业生涯规划
2014/02/26 职场文书
小学老师寄语大全
2014/04/04 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技