2017-01-11 1 views
1

각도 2를 사용하고 json 데이터를 PHP 파일로 보내려고합니다. 게시 요청을 사용하여 데이터를 보내려고하면 "SyntaxError : JSON.parse : JSON 데이터의 1 행 1 열의 예상치 못한 문자"라고 표시됩니다. 네트워크 탭을 보면 상태 200이 나와서 보냈습니다. 내가 뭘 잘못하고 있는지 모르겠지만, 누군가가 이것을 볼 수 있다면 고맙겠습니다. 여기 Angular 2 : SyntaxError : JSON.parse : JSON 데이터의 1 열 1에서 예상치 못한 문자

내가

sendData(data): Observable<Object>{ 
let url = "test.php"; 
let encoded_data = JSON.stringify({data}); 
console.log('encoded', encoded_data); 
    let headers = new Headers({ 'Content-Type': 'application/json; charset=utf-8' }); 
    let options = new RequestOptions({ headers: headers }); 

    return this.http.post(url, encoded_data).map(
     (res: Response) => res.json() || {} 
    ); 
} 

나는 이런 내 구성 요소에서 사용 후 요청을 사용하고 데이터 서비스입니다. 이도 캐릭터 라인 때

sendDatatoServer(){ 
    this.dataService.sendData(this.data) 
    .subscribe(
     data => { 
      console.log('the data', data); 
     }, 
     (err) => console.log(err), 
     () => console.log("data success!!") 
    ); 
} 

내 JSON 데이터는 다음과 같이 다소 보인다. 여기

{"data": [{"title": "sometext" }, {"title": "sometext" }]} 

내가 지금까지 가지고있는 test.php 파일입니다. 이것이 올바른지 아닌지는 잘 모르겠지만 응답을 보내지는 못합니다.

<?php 


header("Access-Control-Allow-Origin: *"); 
header("Content-Type: application/json; charset=UTF-8"); 

$postdata = file_get_contents("php://input"); 
$request = json_decode($postdata); 

echo $request; 
+0

'$ request'는 객체입니다.'echo $ request;'라고 표시하면 어떻게 될까요? – Barmar

+0

@Barmar 키를 반향하려고했지만 오류가 계속 발생합니다. – LadyT

+0

문제는 요청이 아니라 응답입니다. res.json()에 응답을 매핑하면 구문 분석 오류가 발생합니다 (예 : 응답에 html이 포함 된 경우). 이는 웹 서버가 예외를 반환 할 때 쉽게 발생할 수 있습니다. – Matt

답변

2

문제는 PHP쪽에있는 것 같습니다. 다음에 대해 궁금해 할 것입니다.

let encoded_data = JSON.stringify({data}); 

정말 중괄호가 있어야하나요? 글쎄요, 중요한 것은 JSON이 다음과 같이 보이는 경우입니다.

{"data": [{"title": "sometext" }, {"title": "sometext" }]} 

이 모두 좋을 것입니다.

echo json_encode($request->title) 

그것은 : 당신은 당신과 같이 제목을 액세스하고 싶어했다

echo json_encode($request); 

주석에서 : 코멘트에서 언급 한 바와 같이

, 당신은 PHP 측에서 데이터를로 json_encode 필요 불가능, 어떤 제목을 의미합니까? , 코드의 나머지 부분이 잘 보이는이 외에도에서

echo json_encode($request->data[0]->title); 

, 그래서이 작동합니다 : 귀하의 JSON은 첫 타이틀 예에 액세스하려면 다음을 수행해야하므로, 배열을 포함하는 객체입니다 :)

+0

설명해 주셔서 감사합니다. 이것은 정말로 도움이됩니다.그래도 오류가 발생하지만 데이터가 내 데이터베이스에 표시됩니다. 잘 됐네. – LadyT

+0

어디서 오류가 있습니까? 나는 실제로 이것을 시도하고 잘 동작했다. – Alex

+0

콘솔에서 오류가 발생했습니다. 그 이상하지만. 'SyntaxError : JSON.parse : JSON 데이터의 1 행 1 열에서 예기치 않은 문자가 있습니다. '그냥 이상하게 작동했기 때문에 그 이상한 일이었습니다. 갑자기이 오류가 발생합니다. – LadyT

관련 문제