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 相关文章推荐
MVC模式的PHP实现
Oct 09 PHP
phpMyAdmin 安装教程全攻略
Mar 19 PHP
php引用返回与取消引用的详解
Jun 08 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
Apr 24 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
Jun 12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
Jun 23 PHP
跟我学Laravel之快速入门
Oct 15 PHP
php+ajax实时输入自动搜索匹配的方法
Dec 26 PHP
PHP实现CSV文件的导入和导出类
Mar 24 PHP
教你在PHPStorm中配置Xdebug
Jul 27 PHP
php获取汉字拼音首字母的方法
Oct 21 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 filter_var() 函数 Filter 函数
2012/04/25 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
nodejs导出excel的方法
2015/06/30 NodeJs
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
让nodeJS支持ES6的词法----babel的安装和使用方法
2017/07/31 NodeJs
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
vue iview多张图片大图预览、缩放翻转
2019/07/13 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
Python机器学习之K-Means聚类实现详解
2018/02/22 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
python实现单链表的方法示例
2019/09/03 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
Python with语句和过程抽取思想
2019/12/23 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
Hotels.com印度:酒店预订
2019/05/11 全球购物
美国浴缸、水槽和水龙头购物网站:Vintage Tub & Bath
2019/11/05 全球购物
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
学习教师法的心得体会
2014/09/03 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
房屋所有权证明
2015/06/19 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书