2013-06-08 3 views
0

데이터를 전달하기 위해 아약스로 전달했지만 json 데이터를 구문 분석 할 수 없습니다. 아약스 호출에서 아약스 코드를 호출합니다.

$.ajax({ 
     url: 'http://localhost/curl_call.php', 
     type:"POST", 
     data: 
    { 
     url_path:"http://localhost/login/", 
     data:"name=bddd&password=abc", 
    }, 
    crossDomain: true, 
     processData: true, 
     success:function(response) 
    { 
       res_par=JSON.parse(response); 
       alert(res_par["success"]); 
      } 
)}; 

curl_call.php :

function curl_load($url,$post_data){ 
curl_setopt($ch=curl_init(), CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 

$response = curl_exec($ch); 
curl_close($ch); 
return $response; 

}

if((isset($_POST["url_path"]))&&($_POST["url_path"]=="http://localhost/api/login/")) 
{ 
echo json_encode(json_decode(curl_load($_POST["url_path"],$_POST["data"]))); 
} 

구문 분석 할 수없는 반환 데이터 이유는 무엇입니까?

+0

코드 샘플이 일치하지 않습니다. 'url_path'가'http : // localhost/login /'로 설정되어있는'$ .ajax'를 호출하고 있습니다 만, PHP 스크립트에서는'http : // localhost/api/login /'로 설정 될 것을 기대하고 있습니다. 이것은 실패하고'curl_load' 함수는 결코 호출되지 않을 것입니다. –

답변

0

스크립트에서 일부 디버깅이 필요합니다. 순서대로 다음과 같은 시도 : 모든

  1. 첫째, 왜 당신 json_decodejson_encode 같은 문자열을?

  2. 그런 다음 응답이 유효한 JSON 문자열인지 확인하십시오. 여기에서 시도해보십시오. http://json.parser.online.fr/

  3. response은 (는) json의 유효한 속성입니까?

  4. curl_call.php 상단에 추가해보세요.

    header ('Content-type : application/json; charset = utf-8');

  5. 그리고 다음에 대한 JS의 success 기능을 대체 한 다음 브라우저의 콘솔 확인 :

    성공 : 기능 (응답) { 을 console.log (응답); }

관련 문제