Как правильно вернуть комментарий с моего контроллера и использовать его в функции .done () AJAX? - PullRequest
0 голосов
/ 28 мая 2018

Как я могу вернуть комментарий, который был сохранен в базе данных, чтобы использовать его в функции .done (), чтобы я мог отобразить этот комментарий без обновления страницы?

CommentController:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Comment;

class CommentsController extends Controller
{
    public function postComment(Request $request){
        $userId = $request['userId'];
        $imageId = $request['imageId'];
        $commentText = $request['comment'];

        $comment = new Comment();
        $comment->user_id = $userId;
        $comment->image_id = $imageId;
        $comment->comment = $commentText;
        $comment->save();
    }
}

JavaScript:

$('.postComment').on('click', function(event){
        event.preventDefault();
        var userId = $("input[name=user_id]").val();
        var imageId = $("input[name=image_id]").val();
        var comment = $("textarea[name=comment]").val();

        $.ajax({
            method: 'POST',
            url: urlComment,
            data: {userId: userId, imageId: imageId, comment: comment, _token: token}
        }).done(function(serverResponseData){
            $("textarea[name=comment]").val("");
            $('.comments').append('<p></p>');
        })
    });

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Вы можете сделать это, вернув json резонанс и получив доступ к методу возврата данных в готовом виде в ajax

 public function postComment(Request $request){
    $userId = $request['userId'];
    $imageId = $request['imageId'];
    $commentText = $request['comment'];

    $comment = new Comment();
    $comment->user_id = $userId;
    $comment->image_id = $imageId;
    $comment->comment = $commentText;
    $comment->save();
    return response()->json(['comment'=>$comment]);
}
0 голосов
/ 28 мая 2018

Вы можете вернуть комментарий, и он будет на serverResponseData, вам просто нужно добавить его при возврате вашего метода:

 public function postComment(Request $request){
    $userId = $request['userId'];
    $imageId = $request['imageId'];
    $commentText = $request['comment'];

    $comment = new Comment();
    $comment->user_id = $userId;
    $comment->image_id = $imageId;
    $comment->comment = $commentText;
    $comment->save();
    return $comment;
}

После этого serverResponseData будет содержать значение, если вы этого хотите.чтобы получить к нему доступ, как к массиву, вы можете установить тип возвращаемого значения ajax: json: dataType: 'json'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...