2015-09-15 107 views
0

我想在頁面中發送ajax發佈請求,但是在控制檯中出現錯誤。在Laravel-5中發佈ajax請求

POST http://local.bazaar.com/testimonials/submit 500 (Internal Server Error) 

routes.php文件

Route::post('/testimonials/submit','[email protected]'); 

Ajax.js

$("#submitTestimonial").click(function() { 
    $.ajax({ 
     url: '/testimonials/submit', 
     method: 'POST',    
     success: function(data) { 
      alert(data); 
      die; 
     } 
    }) 

    return false; 
}); 

TestimonialsController.php

<?php 
namespace App\Http\Controllers; 

use Input; 
use Request; 

class TestimonialsController extends Controller 
{ 
    /** 
    * Perform validations on user data 
    * Hash Password 
    * Create 
    * @return Response 
    */ 
    public function savetesti() 
    { 
     // Getting all post data 
     print_r("success"); 
    } 
}  
?> 

viewPage->

<div class="testimonialForm"> 
    <form action="#" method="POST"> 
     <div class="testimonialFormTitle">Write A Testimonials</div> 
     <a class="closeTestimonialBtn"></a> 
     <p><input type="text" placeholder="Your Name" id="tname" name="name" class="inputTxt placeholder"></p> 
     <p><input type="text" placeholder="Your Email" id="temail" name="email" class="inputTxt placeholder"></p> 
     <p><textarea placeholder="Testimonial" cols="50" rows="6" id="tmessage" name="message" class="inputTxtArea placeholder"></textarea></p> 
     <a class="greyBtn" id="submitTestimonial" href="#">Submit</a> 
    </form> 
</div> 
+0

不要print_r的成功。把它返還。就像這個'返回'成功';'並沒有在JavaScript中死亡。您提交數據的視圖在哪裏? – aldrin27

+0

我改變了它,但仍顯示相同的錯誤。 – aniruddh

+0

提交表單的視圖在哪裏? – aldrin27

回答

1

我認爲問題在於csrf標記。
當你發佈帖子請求時,應該總是有一個csrf標記。

如果您已經創建了一個形式照射/ HTML門面那麼它很簡單

{!! Form::open() !!} 
{!! Form::close() !!} 

如果你沒有照射/ HTML去你composer.json文件,並添加

"illuminate/html": "~5.0", 

在laravel之後的require塊中。該運行作曲家更新後,轉到這裏/config/app.php你應該添加一個新的供應商和別名

'providers' => [ 
    'Illuminate\Html\HtmlServiceProvider', 
], 

'aliases' => [ 
    'Form' => 'Illuminate\Html\FormFacade', 
], 

現在這種形式裏面有一個與CRSF令牌的隱藏輸入字段。
在你的JavaScript文件中,你可以得到類似的代碼。

var data = {}; 
data._token = $('[name="_token"]').val(); 

然後將數據發送對象與AJAX調用後

$.ajax({ 
    url: '/testimonials/submit', 
    method: 'POST', 
    data: data,    
    success: function(data){ 
     alert(data); 
    } 
}); 

而對於測試目的,你可以改變你的函數

public function savetesti() 
{ 
    return 'success'; 
} 
+1

謝謝Szenis。現在它的工作。 – aniruddh