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 相关文章推荐
Apache+php+mysql在windows下的安装与配置图解(最新版)
Nov 30 PHP
PHP 学习路线与时间表
Feb 21 PHP
用PHP书写安全的脚本代码
Feb 05 PHP
php函数间的参数传递(值传递/引用传递)
Sep 23 PHP
PHP代码优化的53个细节
Mar 03 PHP
thinkphp模板赋值与替换实例简述
Nov 24 PHP
PHP处理大量表单字段的便捷方法
Feb 07 PHP
php实现通用的信用卡验证类
Mar 24 PHP
PHP实现简单的新闻发布系统实例
Jul 28 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
Mar 21 PHP
php7安装yar扩展的方法详解
Aug 03 PHP
PHP http请求超时问题解决方案
Nov 13 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将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
php实现商城购物车的思路和源码分析
2020/07/23 PHP
js打印纸函数代码(递归)
2010/06/18 Javascript
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
sails框架的学习指南
2014/12/22 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
微信小程序 滚动到某个位置添加class效果实现代码
2017/04/19 Javascript
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
React Native 图片查看组件的方法
2018/03/01 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
python3实现绘制二维点图
2019/12/04 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
Django admin组件的使用
2020/10/24 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
职工趣味运动会方案
2014/02/10 职场文书
2014年五一活动策划方案
2014/03/15 职场文书
铣工实训报告
2014/11/05 职场文书