PHP에서 Jquery의 $ .ajax 함수로 JSON 문자열을 다시 보내는 것과 비슷한 동작이 나타납니다.jquery/PHP : 컬 문자열에서 NULL을 반환하는 중
브라우저에서 php 스크립트를 방문하거나 php로 명령 행을 통해 호출하면 완전히 유효한 JSON (jsonlint.com으로 테스트 됨)을 반환합니다. 그러나 HTML 파일에서 AJAX 호출을 할 때마다 항상 NULL이 반환됩니다. 기본적으로
는 PHP에서 나는이 일을 해요 :// case in a switch that handles command 'getinfo':
$url = "http://someapi.com:1234/api/entity/" . $tagid;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERPWD, "user:pass");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$reply = curl_exec($ch);
header('Content-Type: application/json');
echo $reply;
이이 밖으로 뱉어 :
[ {
"class" : "entity",
"guid" : "IT_EQUIPMENT_abcdef12345677890",
"retired" : false,
"deletable" : true,
"$aAssetTamper" : false
} ]
내가 함께 헤더없이도 함께하고 RETURNTRANSFER 세트없이 모두를 시도하고, 한() 선.
이$.ajax({
url: "gimmedata.php",
dataType: "json",
cache: false,
async: false,
data: { 'cmd' : 'getinfo', 'tagid' : $('#tag').val },
success: function(data, textStatus) {
// rfcode location
console.log(data);
}
});
상태는 항상 "성공"을 반환하고 데이터를 "[]"항상 다음 HTML 측면에서, 나는 Ajax를 호출하고 있습니다.
이상한 것은 내가 PHP 스크립트의 출력을 복사 한 다음 다시 스크립트 자체에 붙여 넣을 경우, 다음 컬를 거치지 않고 해당 문자열을 에코이며, 다음 내 AJAX 호출이 잘 작동 :
echo '
[ {
"class" : "entity"
"guid" : "IT_EQUIPMENT_abcdef12345677890",
"retired" : false,
"deletable" : true,
"$aAssetTamper" : false
} ]';
return;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERPWD, "user:pass");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$reply = curl_exec($ch);
header('Content-Type: application/json');
echo $reply;
나는 그것이 무엇인지 모른다. 어떤 단서? curl_exec이 텍스트에 이상한 일을하고 있습니까?
유효한 JSON이 반환되는지 확인하고 json_encode를 사용해 변경 사항을 확인 했습니까? – adeneo