1

私は 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;
});

私は何を間違っていますか?ご協力いただきありがとうございます。

4

3 に答える 3

1

Laravel は Response::json で正しいヘッダーを送信するため、Javascript で JSON を解析する必要はありません。単に行を変更するだけです。

var message = $.parseJSON(data);

var message = data;
于 2013-05-30T16:19:20.223 に答える
0

json_encode();JSON 形式で応答を送信する場合は、PHPを使用してエンコードする必要があります。done メソッドに成功した後、オブジェクトを次のように解析します。JSON.parse();

例 :

phpファイルの行を次のように変更します return response()->json(json_encode($data));

次のようにJavaScriptファイルに行を追加します

done(function (data){
console.log(JSON.parse(data));
console.log(data.text);
});
于 2016-12-27T10:23:58.057 に答える