2015-12-14 4 views
5

Я использую логин Google Oauth с помощью Google Api's в Laravel 5.0. Я получаю данные в настоящее время в электронной почте пользователя, id_token, и теперь я хочу отправить эти данные контроллеру (SigninController) для вызова нашего собственного api и получить ответ обратно на передний конец (signin.blade.php) через Ajax запрос. Но мой запрос Ajax не работает. Здесь я прикрепляю коды.запрос ajax не работает для laravel 5.0

Аякса

Мой Signin.blade.php файла выглядит как (я включил CSRF заголовок):

$.ajax({ 
      url: '/signin/oauth', 
      type:"POST", 
      data: data, 
      headers: { 'X-CSRF-Token' : token}, 
      success:function(data){ 

       console.log(data); 
       if(data){ 
        console.log("Success nowwww for ajax expected data!"); 
        // window.location.href = '{{url("/home")}}'; 
       } 
       else{ 
        console.log("Success ajax ! But not expected data!"); 
        // window.location.href = '{{url("/signup")}}'; 
       } 

      },error:function(){ 
       alert("error!! ajax failure !!!!"); 
      } 
    }); 

Мой routes.php выглядит как:

Route::post('/signin/oauth', [ 
     'uses' => '[email protected]', 
     'as' => 'post_signin_oauth', 
    ]); 

В мои функции signinProcessOauth SigninController нормально " Request for Form "работает, но« Request-> ajax() «возможно, не работает. Это выглядит так:

 . 
    . 
    use Illuminate\Http\Request; 
    use Illuminate\Support\Facades\Session; 
    . 
    . 
    public function signinProcessOauth(Request $request) 
    { 
     $getData = $request->ajax(); 

     if ($getData) { 

     $authCode = $request['authCode']; 
     $idToken = $request['idToken']; 
     $userEmail = $request['userEmail']; 

       // call the api here and send the above data to the server and process the response like saving the cookie etc 

     return $authCode; // return according to the response,this will return in ajax success function,right now it is authcode just for testing purpose 
    } 

    return "error"; 
    } 

Каждый раз, когда я запускаю код, я получаю сообщение об ошибке! Ajax failure !!!! " ответ, т. е. вызвана функция отказа ajax. Я не могу понять, где проблема? Или есть ли другой способ отправить данные из представления на контроллер и вернуть ответ на интерфейс?

Благодарим вас за то, что вы читали такой длинный пост терпеливо. :) :)

+0

добавить аргументы ответа в свою 'error: function' и сообщить нам конкретное сообщение об ошибке ->' Функция (jqXHR jqXHR, String textStatus, String errorThrown) '- вам могут потребоваться дополнительные заголовки, такие как' Content -Type' – WhiteHat

+0

@WhiteHat, Спасибо за ваш добрый совет. Я попробовал тип содержимого, используя: contentType: 'application/octet-stream; charset = utf-8 '. Но тщетно . Я попытался передать аргумент в функции ошибки и попытался напечатать его в консоли. В результате получается: ajax! !! [object Object]. И я проверил сеть в своем браузере, и он сказал: 500, внутренняя ошибка сервера. :(заголовки, содержимое все нормально, но запрос ajax использует «no cache». Может быть, проблема? –

+0

Сначала проверьте ваш запрос ajax почтовым агентом или другим инструментом. – dipesh

ответ

0

В вашем методе $request не является массивом, его объектом. Поэтому для доступа к свойствам вам необходимо использовать ->.

0

Изменить свой адрес следующим образом:

url: '{!! route('post_signin_oauth') !!}' 

Надеется, что это будет работать.

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