2016-09-01 6 views
0

У меня есть простой почтовый запрос, который в настоящее время работает, если я не укажу контроллер в файле маршрута. Когда я изменяю маршрут для доступа к контроллеру, который я специально создал для запросов AJAX, он возвращает ошибку внутреннего сервера 500.Ajax Запрос не доступ к контроллеру, Laravel

Мой Route.php выглядит следующим образом:

Route::post('ajaxTagStore', '[email protected]'); 

Мой контроллер выглядит следующим образом:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 

class AjaxController extends Controller 
{ 
public function postAjaxTag(Request $request) { 
    if(Request::ajax()){ 
    return Response::json(Request::all()); 
    } 
} 

}

и, наконец, мой AJAX код выглядит следующим образом:

$.ajaxSetup({ 
    headers: { 
    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
    } 
}); 

$(document).ready(function(){ 
    $('#tag-btn').click(function(){ 
    var fname = $('#firstname').val(); 
    var lname = $('#lastname').val(); 
    var token = $('#token').val(); 

    var dataString = $('#tag').serialize(); 

    $.ajax({ 
     type: 'POST', 
     url: '/ajaxTagStore', 
     data: dataString, 
     success: function(response){ // What to do if we succeed 
     console.log(response); 
     $('#postRequestData').html(response); 
     } 
    }) 

    }); 
}); 

Как я уже говорил, ks, если я не укажу контроллер и просто использую это:

Route::post('ajaxTagStore', function(){ 
if(Request::ajax()){ 
    return Response::json(Request::all()); 
} 
}); 

Любые предложения относительно того, почему это так? (Я также использую csrf-токен)

+0

У вас есть какие-либо сообщения об ошибках в вашем каталоге хранилищ/журналов? – Dan

ответ

1

Есть как минимум 2 возможных проблемы.

  1. Вы создаете его вручную через текстовый редактор или копируете с другого контроллера? если да, тогда я мог бы предложить вашему проекту проект, чтобы он обновил свои загруженные файлы.

  2. Контроллер Laravel использует различный Request класс, чем используемый в файле routes.php, поэтому я и предлагаю, когда вы изменить if(Request::ajax()){ к if($request->ajax()){ в методе контроллера

Дайте мне знать, если один из них решение устранило вашу проблему. Если он все еще имеет проблемы, покажите сообщение об ошибке, указанное в вашем результате ajax. Надеюсь, он ответит на ваш вопрос.

+0

2 было правильным решением. Благодаря! –

+0

@JoelPierre рад, что это работает, если вы находите, что этот ответ - это решение, просто отметьте это как принятое и не забывайте повышать, спасибо! –

+0

Я сделал, но у меня недостаточно «очков», чтобы показать. –

Смежные вопросы