当前位置:首页 > PHP教程 > php高级应用 > 列表

getJSON跨域SyntaxError问题分析

发布:smiling 来源: PHP粉丝网  添加日期:2021-03-29 15:13:02 浏览: 评论:0 

这篇文章主要介绍了getJSON跨域SyntaxError问题分析,需要的朋友可以参考下,昨天写一个功能:点击手机验证的同时获取json端的数据。

javascript代码如下:

  1. $(".check_mobile").click(function(){ 
  2. var mobile = $('.mobile').val(); 
  3. $.getJSON("http://www.test.com/user.php?mobile="+mobile+"&format=json&jsoncallback=?"function(data){ 
  4. if (data.succ == 1) { 
  5. var html = "<input type='hidden' name='cityid' value='"+data.data.cityid+"'><input type='hidden' name='communityid' value='"+data.data.communityid+"'>"
  6. $(".r_m").append(html); 
  7. }); 
  8. }); 

user.php代码如下:

  1. <?php 
  2. if($_GET){ 
  3. $mobile = $_GET['mobile']; 
  4. if ($mobile == 'XXXX') { 
  5. $user = array
  6. 'city' =>'石家庄'
  7. 'cityid' =>'1'
  8. 'community' =>'紫晶悦城'
  9. 'communityid'=>'1' 
  10. ); 
  11. $sucess = 1; 
  12. $return = array
  13. 'succ' =>$sucess
  14. 'data' => $user 
  15. ); 
  16. }else { 
  17. $sucess = 2; 
  18. $return = array
  19. 'succ' =>$sucess 
  20. ); 
  21. echo json_encode($return); 
  22. ?> 

相应如下:

问题出来了:

在火狐浏览器中: SyntaxError: missing ; before statement

解决方法如下:

  1. header("Access-Control-Allow-Origin:http:www.test.com"); 
  2. $b = json_encode($return); 
  3. echo "{$_GET['jsoncallback']}({$b})"
  4. exit

最后完整代码:

  1. <?php 
  2. header("Access-Control-Allow-Origin:http:www.phpfensi.com"); 
  3. if($_GET){ 
  4. $mobile = $_GET['mobile']; 
  5. if ($mobile == '18831167979') { 
  6. $user = array
  7. 'city' =>'石家庄'
  8. 'cityid' =>'1'
  9. 'community' =>'紫晶悦城'
  10. 'communityid'=>'1' 
  11. ); 
  12. $sucess = 1; 
  13. $return = array
  14. 'succ' =>$sucess
  15. 'data' => $user 
  16. ); 
  17. }else { 
  18. $sucess = 2; 
  19. $return = array
  20. 'succ' =>$sucess 
  21. ); 
  22. $b = json_encode($return); 
  23. echo "{$_GET['jsoncallback']}({$b})"
  24. exit
  25. ?> 

如果在 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

Tags: getJSON SyntaxError

分享到: