我正在尝试在我的页面中发送ajax post请求,但我在控制台中收到错误。
POST http://local.bazaar.com/testimonials/submit 500 (Internal Server Error)
routes.php文件
Route::post('/testimonials/submit','TestimonialsController@savetesti');
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-&GT;
<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 :(得分:1)
我认为问题是csrf令牌 当你发布帖子请求时,应该总是有一个csrf标记。
如果你创建了一个带有illuminate / html外观的表单,那么非常简单
{!! Form::open() !!}
{!! Form::close() !!}
如果你没有照亮/ html,请转到你的composer.json文件并添加
"illuminate/html": "~5.0",
在laravel之后的require块中。之后运行composer update并转到/config/app.php,你应该添加一个新的提供者和别名
'providers' => [
'Illuminate\Html\HtmlServiceProvider',
],
'aliases' => [
'Form' => 'Illuminate\Html\FormFacade',
],
现在在这个表单中有一个带有crsf标记的隐藏输入字段 在您的javascript文件中,您可以使用类似的方式获取此代码。
var data = {};
data._token = $('[name="_token"]').val();
然后使用ajax post call
发送数据对象$.ajax({
url: '/testimonials/submit',
method: 'POST',
data: data,
success: function(data){
alert(data);
}
});
为了测试目的,你可以改变你的功能
public function savetesti()
{
return 'success';
}