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 进行 AJAX 分页

Laravel 5.5 AJAX Post Call上没有消息异常。第203行,Handler.php,419未知状态

如何使用 ajax 解决 Laravel Post Error 403?

从 Laravel 4.2 升级到 5.0 后获取 POST 的路由未定义错误

如何在 laravel 4.2 中使用带有自定义预过滤器的 AJAX 上传 CSV 文件