昨天写一个功能:点击手机验证的同时获取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