Laravel AJAX无法得到回应

时间:2013-05-30 16:05:06

标签: php ajax laravel

我正在使用Laravel框架,我正在发送一封AJAX请求来发送电子邮件。请求工作正常,邮件发送,问题是如果邮件已成功发送,我无法获得服务器响应。

这是代码(简短版),位于views / contact / 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;
});

我做错了什么?谢谢你的帮助。

3 个答案:

答案 0 :(得分:1)

由于Laravel使用Response :: json发送正确的头文件,因此无需在Javascript中解析JSON,只需更改行

var message = $.parseJSON(data);

var message = data;

答案 1 :(得分:1)

你不应该从视图文件中return Response::json(),视图应该回显从视图生成的任何输出,但在这种情况下你需要从路由本身返回响应,因为json也会包含标题信息。

答案 2 :(得分:0)

虽然必须使用PHP中的json_encode();编码以JSON格式发送响应。成功到达完成方法后,将对象解析为JSON.parse();

示例:

将php文件中的行修改为 return response()->json(json_encode($data));

将javascript文件中的行添加为

done(function (data){
console.log(JSON.parse(data));
console.log(data.text);
});