2017-03-23 6 views
0

바라건대 쉬운 질문입니다. 실제로 실제로 찾은 예제를 사용했지만 작동하지 않는 이유를 파악할 수 없습니다. 콘솔이나 아무 것도 오류가 없습니다.Ajax Alert Response from PHP

나는 PHP 스크립트에 데이터를 전달하는 데 사용하고있는 ajax Post 함수가 있습니다.

데이터가 올바르게 전달되었지만 매번 응답이 오류 경고로 되돌아옵니다. 서버 측에서 데이터를 가져 와서 제대로 처리하고 있는지 확인할 수 있으며 성공 응답을 반환하지 않는 이유를 파악할 수 없습니다.

$(function() { 
     $('#pseudoForm').on('click', '#submit', function (e) { 
      e.preventDefault(); 
      $.ajax({ 
       type: "POST", 
       url: "psu_output.php", 
       data: $('#pseudoForm').serialize(), 
       datatype: 'json', 
       success: function (response) { 
        if(response.type == 'success') { 
         $('#messages').addClass('alert alert-success').text(response.message); 
        } else { 
         $('#messages').addClass('alert alert-danger').text(response.message); 
        } 
       } 
      }); 
      return false; 
     }); 
    }); 
</script> 

그리고이 사용되는 내 PHP 스크립트에서

: 여기

는 아약스 당신이 JSON 응답하여 작업하는 경우

<?php 

$success = true; 

if($success == true) { 
    $output = json_encode(array('type'=>'success', 'message' => 'YAY')); 
} else { 
    $output = json_encode(array('type'=>'error', 'message' => 'WHOOPS')); 
} 

die($output); 
?> 
+1

런타임에'response'는 실제로 무엇을 포함합니까? – David

+0

응답을 보려면'console.log (response)'를 사용하십시오. – Barmar

+0

die() 대신 $ output을 에코하려고 시도합니다. –

답변

2

을 문제는 datatype: 'json'dataType: 'json'을해야한다는 것입니다 : 당신은 에코 또는 PHP 스크립트 FROM 다른 작업을 인쇄하기 전에 코드 의 다음 줄을 사용하여 그렇게 할 수 있습니다. Javascript는 대소 문자를 구분합니다.

+0

답장을 보내 주셔서 감사합니다. 다른 사람들이 읽으려면 실제로 2 가지 작업을 수행해야했습니다. 1) 오타를 수정하고 2) PHP 스크립트의 나머지 부분에 추가하십시오. 나는 그것을 아래에 가지고 있었다. 그리고 올바르게 돌아 오지 않고 있었다. (글쎄 응답을 보내고 있었지만 아약스는 그것을 보지 못했다). – fcamp

0

, 당신은 헤더를 설정해야합니다 그래서 당신의 브라우저와 자바 스크립트가 올바르게 해석 할 수 있습니다.

<?php 

$success = true; 

if ($success == true) { 
    $output = json_encode(array(
     'type' => 'success', 
     'message' => 'YAY' 
    )); 
} else { 
    $output = json_encode(array(
     'type' => 'error', 
     'message' => 'WHOOPS' 
    )); 
} 

header('Content-Type: application/json'); 
echo $output; 
+0

'dataType : 'json''을 사용하는 경우에는 필요하지 않습니다. 문제는 그가 오타가 있다는 것입니다. – Barmar

+0

해결 방법이 너무 많습니다. 당신도 그 중 하나입니다, 제 것도 하나입니다. –

1

반환 값을 받았기 때문에 오류가 발생했습니다. JSON으로 데이터를 에드하지만 콘텐츠 형식은 단순 문자열 (text/html과) 그래서 당신과 같이 먼저 수신 된 데이터를 JSON.parse()해야합니다

$(function() { 
    $('#pseudoForm').on('click', '#submit', function (e) { 
     e.preventDefault(); 
     $.ajax({ 
      type: "POST", 
      url: "psu_output.php", 
      data: $('#pseudoForm').serialize(), 
      datatype: 'json', 
      success: function (response) { 
      response = JSON.parse(response); 
      if(response.type == 'success') { 
        $('#messages').addClass('alert alert-success').text(response.message); 
      } else { 
        $('#messages').addClass('alert alert-danger').text(response.message); 
       } 
      } 
     }); 
     return false; 
    }); 
}); 

두 번째 옵션은 자체 따라서 제거 PHP에서 JSON 헤더를 보내는 것입니다 javascript에서 JSON을 구문 분석해야합니다.

header('Content-Type: application/json'); 

다음

echo $output; 
+0

이것도 작동합니다! –

+1

'dataType : 'json''은 자동으로 분석합니다. 문제는 그가 오타가 있다는 것입니다. – Barmar