어제 저는 휴대폰을 클릭하여 json 측에서 데이터를 확인하고 동시에 가져오는 함수를 작성했습니다.
자바스크립트 코드는 다음과 같습니다.
$(".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); } ?>
다음과 같습니다.
문제는
Firefox: SyntaxError: before 문이 없습니다.
해결 방법은 다음과 같습니다.
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에 헤더("Access-Control-Allow-Origin:http:www.test.com") 코드가 없으면
가 나타납니다.XMLHttpRequest는 ''을 로드할 수 없습니다. 요청된 리소스에 'Access-Control-Allow-Origin' 헤더가 없습니다. 따라서 Origin ''에 액세스가 허용되지 않습니다.
echo "{$_GET['jsoncallback']}({$b})" 코드가 누락된 경우
Google Chrome: Uncaught SyntaxError: 예기치 않은 토큰:
Firefox: SyntaxError: before 문이 없습니다.