2012-02-13 2 views
0

데이터베이스 정보를 가져 오기 위해 다른 서버에서 PHP 스크립트를 호출하고 JSON 배열을 반환합니다. 그러나 AJAX는 크로스 도메인 호출을 호출하지 않기 때문에 원격 PHP 스크립트에 대한 CURL 호출을 수행하는 로컬 PHP 스크립트를 통해 실행합니다. 이 스크립트는 curl 스크립트 (getURL.php)에 JSON 배열을 반환하고 에코 백을 반환합니다. 콘솔에 반환 된 데이터를 쓰는 것은 올바르지 만 모든 문자를 배열 요소로 계산합니다. 그래서 나는 아마도 그것이 텍스트로 다시 돌아올 것이라고 생각했습니다. 그러나 $ .parseJSON (data)을 추가하면 오류가 발생합니다. 그것을 제거하면 길이가 170 ​​인 것을 알 수 있습니다. 어떤 아이디어?CURL 호출을 통해 JSON 반환

function getPrograms() { 

    var data = "url=http://www.wdctravel.com/co-op/getPrograms.php"; 
    $.ajax ({ 
     url: "getURL.php", 
     data: data, 
     success: function(data) { 
      var arr = $.parseJSON(data); 
      postPrograms(arr); 
     } 
    }); 
}  

function postPrograms(arr) { 
    var len=arr.length; 
    alert (len); 
    for(var i = 0; i < len; i++) { 
     if (i % 2 == 0) { 
      $('#programs tr:last').append("<tr></tr>"); 
     } 
     $('#programs tr:last').append('<td><input type="text" size="3" name="CoOpID~' + arr[i]['id'] + '" /></td><td>' + arr[i]['name'] + '&nbsp;<span style="color: red;"><span id="cs' + arr[i]['id'] + '">' + arr[i]['remain'] + '</span> spots left.</span></td>'); 
     var c = $("#programs tr:last td").length; 
    }; 
} 

답변

0

JSON 응답의 형식이 잘못되었는지 확인하십시오.

조작 된 JSON 문자열을 전달하면 예외가 발생하여 이 throw 될 수 있습니다. 예를 들어, 다음은 모두 잘못된 JSON 문자열입니다.

{테스트 : 1} (테스트에는 큰 따옴표가 없습니다). { 'test': 1} ('test'는 큰 따옴표 대신 작은 따옴표 사용). 또한 아무 것도 전달하지 않은 경우, 빈 문자열, null 또는 정의되지 않은 경우 'null' 이 parseJSON에서 반환됩니다. 브라우저가 기본 JSON.parse 구현을 제공하는 경우 jQuery는이를 사용하여 문자열을 구문 분석합니다. JSON 형식에 대한 자세한 내용은 http://json.org/을 참조하십시오. 원격 서버를 제어 할 수있는 경우

http://api.jquery.com/jQuery.parseJSON/

, 나는 JSONP를 사용하는 것이 좋습니다 것입니다. http://en.wikipedia.org/wiki/JSONP