2013-05-30 3 views
1

Laravel 프레임 워크와 함께 작업 중이며 AJAX 요청을 보내 전자 메일을 보내고 있습니다. 요청이 제대로 작동하고 메일이 전송되었지만 메일이 성공적으로 전송 된 경우 서버 응답을받을 수 없습니다.Laravel AJAX가 응답을 얻을 수 없습니다.

여기에 코드 (짧은 버전) 느릅 나무보기/연락처/mail.blade.php 아래에있다 :

if(mail($to, $subject, $body,$headers)) { 
    $data = array('text' => Lang::line('contact.mail-success')->get()); 
    return Response::json($data); 
} else { 
    $data = array('text' => Lang::line('contact.mail-error')->get()); 
    return Response::json($data); 
} 

을 여기에 jQuery의 :

$('#contact-form').submit(function() { 
     var request = $.ajax({ 
      url: BASE+'/contact', 
      type: 'post', 
      data: { name: $('#name').val(), mail: $('#email').val(), message: $('#msg').val() }, 
      dataType:"json", 
      success: function(data){ 
       var message = $.parseJSON(data); 
       alert(message.text); // here I get the "cannot read property of null" in the console log 
      } 
     }); 

    return false; 
}); 

내가 잘못하고있는 중이 야 무슨 일이? 당신의 도움을 주셔서 감사합니다.

+0

은 무엇으로 자바 스크립트 파일에 줄을 추가 return response()->json(json_encode($data));

같은 PHP 파일에서 줄을 수정 콘솔에서 아약스 호출의 원시 응답? 그것을 확인할 수 있습니까? 나는 블레이드보기 안에 "return"문장을 넣는 것이 옳은 일이 아니라고 생각합니다. – migg

+0

console.log (data)를 사용하면 "null"응답을 얻습니다. – SimCity

답변

1

Laravel이 자바 스크립트에서 JSON을 구문 분석 할 필요가 없습니다 응답 : JSON과 올바른 헤더를 전송하기 때문에, 단순히

var message = data; 
+0

새 계정으로 게시했습니다. 죄송합니다. 바보 같은. – clone1018

+0

통찰력을 가져 주셔서 감사합니다. 그러나 여전히 작동하지 않습니다. 그것은 라우팅과 관련이 있을까요? [codehappy.daylerees.com] (http://codehappy.daylerees.com/ajax-content)의 "JSON 응답"섹션을 보면 어디에도 코드가 없습니다. – SimCity

+0

console.log (data) (구문 분석이나 다른 것없이) – clone1018

1

당신은 안 return Response::json()에 선

var message = $.parseJSON(data); 

변경 뷰 파일에서 뷰는 뷰에서 생성 된 출력을 에코하도록되어 있지만이 경우 json은 헤더 정보도 포함하므로 라우트 자체에서 응답을 리턴해야합니다.

+0

Oh jeeze, 나는 그가 뷰 파일을 말한 것을 전혀 몰랐다. 나는 이것이 컨트롤러에서 수행되었다고 생각했다. – clone1018

+0

죄송합니다. 명확하게 지정하지 않았습니다. 이제, 컨트롤러/contact.php 아래에 내 뷰와 동일한 코드를 가진 컨트롤러를 만들었고 다음 코드로 라우트를 만들었습니다 :'Route :: post ('/ contact', array ('as'= 'contact' '=>'contact @ ajax_mail '));'이제 콘솔에 "POST http://www.mysite.com/mysite/public/fr/contact 404 (찾을 수 없음)"오류가 표시됩니다. – SimCity

+0

이것이 Laravel 3 또는 Laravel 4인지 여부를 명확히합니까? 나는 Laravel 3을 추측하지만 확신하고 싶었습니다. – crynobone

0

JSON 형태로 응답을 보내려면 PHP에서 json_encode();을 사용하여 인코딩해야합니다. 수행 방법의 성공에 도달하면 다음과 같이 객체를 구문 분석 JSON.parse();

예 :

done(function (data){ 
console.log(JSON.parse(data)); 
console.log(data.text); 
}); 
관련 문제