JQuery $ .ajax를 사용하여 처리 한 서버에 JSON 인코딩 된 데이터를 보낸 다음 JSON 인코딩 결과를 다시 보내는 응용 프로그램이 있습니다. 문제는 응답을 처리 할 때 JQuery에서 구문 분석 오류가 발생한다는 것입니다. (PHP의 json_encode 함수가 잘못된 JSON 형식을 출력하는 것처럼). 여기서 코드를 제공 :JQuery는 PHP의 json_encode를 사용할 때 JSON 구문 오류를 발생시킵니다.
JavaScript 코드 :이 반응 출력 PHP 코드의 조각
$.ajax({
type: 'POST',
url: URL+'pages/processListUIAjaxRequest',
data:{filters: filters, rebuild_params: $('#rebuild_params\\['+unique+'\\]').val()},
dataType: 'json',
success: function(response){
alert(response);
},
error: function(request, status, error){
alert('Unable to update table contents');
console.log(request);
console.log(status);
console.log(error);
}
});
:
$response->addResult($uFilters);
header('Content-Type: application/json');
$response->toJSON(true);
$ uFilters 간단한 배열을하며 은 $ 응답 객체의 toJSON 방법은 여기에 있습니다 :
public function toJSON($output = false){
$out = array();
if($this->hasErrors()){
$out['has_error'] = true;
$out['errors'] = $this->getErrors();
} else $out['has_error'] = false;
$out['result'] = $this->_result;
if($output){
echo json_encode($out);
}else{
return json_encode($out);
}
}// toJSON
때마다 나는 내가 '테이블의 내용을 업데이트 할 수 없습니다'얻을 코드를 실행하고, 자바 스크립트 콘솔에서 내가 가진 :
'SyntaxError: JSON.parse: unexpected character'
내가 데이터 유형을 정의에도 불구하고 'JSON'과 출력으로 PHP에 의해 json_encode'd된다. 자바 스크립트 콘솔에서 나는 응답 텍스트는 것을 볼 수 있습니다
"{"has_error":false,"result":{"page_id":"xxx"}}"
시도 사본이 온라인 JSON 유효성 검사기 도구를 확인, 흥미로운 일이없이 (이 몇 번 유효하고 몇 번 유효하다 모든 일관성) 조금 혼란스러워.
header('Content-Type: text/json');
header('Content-Type:javascript/json');
header('Content-Type: application/json');
또는 전혀 헤더,하지만 아무것도 : 처럼 다른 헤더를 사용하려고 노력했다.
출력 내용이 JSON 형식이며 메시지에 JSON 내용이 있다고 표시 되더라도 JQuery ajax 요청의 dataType을 'text'로 편집하면 성공 처리기가 실행되고 응답이 올바르게 처리됩니다. 이 경우 $ .parseJSON (응답)을 시도 할 때 같은 문제가 발생합니다.
무엇이 잘못 되었나요? 내 JSON 문자열이 실제로 유효하지 않습니까?
json-content가 시작되기 전에 공간이있을 수 있습니까? – OptimusCrime
@OptimusCrime, 그렇습니다. 실제로는 BOM 문자 였지만 말입니다. – ACs