昨天写一个功能:点击手机验证的同时获取json端的数据。
javascript代码如下:
1
2
3
4
5
6
7
8
9
|
$( ".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代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?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
解决方法如下:
1
2
3
4
|
header( "Access-Control-Allow-Origin:http:www.test.com" ); $b = json_encode( $return ); echo "{$_GET['jsoncallback']}({$b})" ; exit ; |
最后完整代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<?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