JSON
昨天寫一個功能:點擊手機驗證的同時擷取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 = "";$(".r_m").append(html);}});});
user.php代碼如下:
<?phpif($_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);}?>
相應如下:
問題出來了:
在Firefox瀏覽器中: SyntaxError: missing ; before statement
解決方案如下:
header("Access-Control-Allow-Origin:http:www.test.com");$b = json_encode($return);echo "{$_GET['jsoncallback']}({$b})";exit;
最後完整代碼:
<?phpheader("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})"; 代碼
在Google瀏覽器中:Uncaught SyntaxError: Unexpected token :
在Firefox瀏覽器中:SyntaxError: missing ; before statement