如何在 Laravel 5.2 中发送多个参数 AJAX

Posted

技术标签:

【中文标题】如何在 Laravel 5.2 中发送多个参数 AJAX【英文标题】:How to send multiple parameter AJAX in Laravel 5.2 【发布时间】:2016-07-16 12:45:45 【问题描述】:

如何为 AJAX Laravel 发送多个值。 例如:

$('#submit_').on('click', function (e) 
     e.preventDefault();
     var form_data = $('#create').serialize();
     var form_taxonomy = 'category';
     $.ajax(
          headers: 
              'X-CSRF-Token': $('input[name="_token"]').val()
          ,
                type: 'post',
                url: '!! URL::route('category') !!',
                data: formData:form_data,formTaxonomy: form_taxonomy,
                success: function () 
                    $('#append').load('!! URL::route('loadCat') !!');
                ,
                error: function (xhr, status, errorThrown) 
                    alert(JSON.parse(xhr.responseText).category[0]);
                
            );
            jQuery("#create").val('');
        );

控制器代码:

public function create(messageRequest $request)

    if($request->ajax()) 
        $name = Input::get('formData');
        $taxonomy = Input::get('formTaxonomy');
        return response()->json($name, $taxonomy);
    

html代码:

<div class="col-sm-6">
<form method="POST" action="http://localhost:8000/category" accept-charset="UTF-8"><input name="_token"
                                                                                          value="IzByO9fU5yeanaVCudCQpkL5bXGzUh9B4jb400iU"
                                                                                          type="hidden">

    <div class="form-group">
        <div class="form-group">
            <input class="form-control text-right" id="create" name="category" type="text">
        </div>
        <div id="submit_"><input name="createSub" id="submit" class="btn btn-primary" value="submit" type="submit">
        </div>
    </div>
</form>

消息请求验证:

    public function rules()

    return array(
    'category'=>'required|alpha|unique:taxonomies,name',
    );

public function messages()
    return [

        'category.required'=>'fill',
        'category.alpha'=>'only charecter',
        'category.unique'=>'dublicate'
    ];

此代码不起作用。我使用了我的其他示例,但没有人不响应问题是我不知道 laravel 中的参数数据如何调用不会遇到错误并存储在数据库中的数量。

【问题讨论】:

你说的这个代码面值有错误是什么意思 您的代码看起来正确 - 您遇到了什么错误? 填写表格的错误信息。 请填写表格。 @ImtiazPabel 此代码不起作用@madalinivascu 填写表单的错误消息@Chris 【参考方案1】:

您已经序列化了表单,它会生成name=value&amp;name=value 查询字符串格式。看起来您随后想要将数据添加到此查询字符串以进行提交。您将需要手动执行此操作,但可以这样做:

$('#submit_').on('click', function (e) 
    e.preventDefault();
    var form_data = $('#create').serialize();
    var form_taxonomy = 'category';
    $.ajax(
        headers: 
            'X-CSRF-Token': $('input[name="_token"]').val()
        ,
        type: 'post',
        url: '!! URL::route('category') !!',
        // manually combine your form data and your additional post data
        // into one query string
        data: form_data + '&' + $.param(formTaxonomy: form_taxonomy),
        success: function () 
            $('#append').load('!! URL::route('loadCat') !!');
        ,
        error: function (xhr, status, errorThrown) 
            alert(JSON.parse(xhr.responseText).category[0]);
        
    );
    jQuery("#create").val('');
);

编辑

使用您现有的代码,您遇到的问题是您的messageRequest 验证表明category 字段是必需的,但您的请求数据没有category 字段。因此,您的验证失败,并将返回一个 422 响应,其中包含一个包含验证错误的 JSON 对象。

使用上面更新的代码,您的请求数据现在有一个 category 字段,因此验证通过了,但是您的代码中还有一些其他错误会生成 500 错误。您需要跟踪并修复它,这可能需要另一个问题。

【讨论】:

得到错误500 Internal Server Error 和问题alert(JSON.parse(xhr.responseText).category[0]); 并且未设置为数据库 好吧,您还需要更新您显示的服务器代码。将不再有formData 条目,请求中只会包含您的所有表单元素。我可能不明白你想做什么。 我是新手,请多指导 我得到The HTTP status code "0" is not valid. 怎么解决? @MeysamSaberi 在你的代码中,你有这个:return response()-&gt;json($name, $taxonomy);json() 方法的第二个参数应该是整数形式的状态代码,但是您已经传入了分类数据(“类别”),它将被转换为整数 (0)。第一个参数应该是您的数据数组,因此您的代码实际上应该是:return response()-&gt;json([$name, $taxonomy]); 另外,在我的代码中,输入中没有更多的formData 条目,所以$name = Input::get('formData'); 应该是$name = Input::get('category');【参考方案2】:

您正在使用 FormRequests 作为该控制器方法的验证。在这种情况下,您的 FormRequest 是: MessageRequest - 其中包括一个名为 category 的验证参数。

当您的 ajax 提交发生时,它没有提供 category 字段,因此验证失败。

要测试,请尝试将类别数据提供给 ajax 数据:

data: formData:form_data,formTaxonomy: form_taxonomy, category: 'somevalue-unique-to-your-taxonomies',

【讨论】:

这段代码为我解决了这个问题。但是为什么要使用这个呢?一世。 e.每次发送到验证附加值? 归结为您的要求。此请求是否需要类别? 我用这个代码data: 'formData': form_data,'formTaxonomy': form_taxonomy,'category': form_data,【参考方案3】:

像这样更改您的数据部分:

data: 'formData':form_data,'formTaxonomy': form_taxonomy,

【讨论】:

以上是关于如何在 Laravel 5.2 中发送多个参数 AJAX的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 中一个路由中的多个路由参数模式

如何在 Laravel 5.2 中手动发送密码重置请求?

laravel 5.2 如何在刀片中获取路由参数?

在 Laravel 5.2 中使用 mailchimp API

如何使用where关键字检查Laravel 5.2路由中的状态参数?

Laravel 5.2:如何保存多个表单字段?