PHP Laravel 4.2 ajax post返回null或空
Posted
技术标签:
【中文标题】PHP Laravel 4.2 ajax post返回null或空【英文标题】:PHP Laravel 4.2 ajax post return null or empty 【发布时间】:2015-11-24 04:45:22 【问题描述】:我尝试使用 ajax 将数据发布到 laravel 控制器,但仍然得到响应为空。我的成就是发布表单数据并返回错误消息或成功消息。 我是 ajax 和 laravel 框架的新手,请帮我解决问题。
这是元标记标题:
<meta name="_token" content=" csrf_token() ">
这里是html表单:
Form::open(['id'=>'testimonial_form','url'=>URL::action("processing-give-testimonial"),'method'=>'POST'])
Form::hidden('_method', 'PUT')
<div class="row marginbot-20">
<div class="col-md-6 xs-marginbot-20">
Form::text('name',null, ['class'=>'form-control input-lg','placeholder'=>'Enter Name','id'=>'name'])
</div>
<div class="col-md-6">
Form::email('email',null, ['class'=>'form-control input-lg','id'=>'email','placeholder'=>'Enter email','id'=>'email'])
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="form-group">
<select name="subject" id="subject" class="form-control" require="required">
<option value="ask"> / Information</option>
<option value="testimonial">Give Feedback / Testimonial</option>
</select>
</div>
<div class="form-group">
Form::textarea('message',null,['id'=>'message','class'=>'form-control','rows'=>'4','cols'=>'25','placeholder'=>'message','id'=>'message'])
</div>
<!-- Form::submit('Send Message',['id'=>'btnContactUs','class'=>'btn btn-skin btn-lg btn-block']) -->
Form::button('Submit', ['class'=>'btn btn-skin btn-lg btn-block','id'=>'click'])
</div>
</div>
Form::close()
这里是ajax代码:
$(function()
$.ajaxSetup(
headers:
'X-XSRF-Token': $('meta[name="_token"]').attr('content')
);
);
$(document).ready(function()
$('#click').click(function()
var formData =
name : $('#name').val(),
email : $('#email').val(),
subject : $('#subject').val(),
message : $('#message').val(),
;
$.ajax(
type : "POST",
url : " URL::action('processing-give-testimonial') ",
data : formData,
beforeSend: function ()
alert('sure?');
,
success: function(data)
console.log(data);
,
error: function()
console.log('error');
);
);
);
这是控制器:
public function create()
$inputs = array(
'name' =>Input::get('name'),
'email' =>Input::get('email'),
'subject' =>Input::get('subject'),
'message' =>Input::get('message')
);
//return "we reached here";
return Response::json("success");
/*if(Request::ajax())
return Response::json('success', 200);
else
return Response::json('failed', 400);
*/
/* if(Request::ajax())
$data = Input::get('email');
//print_r($data);die;
if ($data != '') return Response::json('success',200);
else return Response::json('failed',400);
*/
/*
$input = Input::get('name');
//$input = Input::get('_token');
if ($input == '')
return Response::json('failed',400);
else
return Response::json('success',200);
*/
//if(!empty($input)) return Response::json(['data'=>'success']);
//else return Response::json('data',$input);
这是我的路线:
Route::post('give-testimonial',['uses'=>'TestimonialController@store','as'=>'processing-give-testimonial']);
这里是filter.php:
Route::filter('csrf', function()
$token = Request::ajax() ? Request::header('X-XSRF-Token') : Input::get('_token');
if (Session::token() != $token)
throw new Illuminate\Session\TokenMismatchException;
);
【问题讨论】:
尝试使用 return Response::create() 而不是 return Response::json() @KhanShahrukh :返回仍然为空或为空。 您的错误日志是否显示任何内容? @Derek ,并非一切都好。 js和控制器上没有错误。但返回仍然是空的。 您正在路由到您未在此处提供的存储方法。 【参考方案1】:我猜你的路由是错误的。尝试更改此路线:
Route::post('give-testimonial',['uses'=>'TestimonialController@store','as'=>'processing-give-testimonial']);
到这里:
Route::post('give-testimonial',['uses'=>'TestimonialController@create','as'=>'processing-give-testimonial']);
【讨论】:
以上是关于PHP Laravel 4.2 ajax post返回null或空的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.5 AJAX Post Call 没有消息异常。第 203 行,Handler.php,419 未知状态
Laravel 5.5 AJAX Post Call上没有消息异常。第203行,Handler.php,419未知状态
如何使用 ajax 解决 Laravel Post Error 403?