用于路由动作的laravel字符串数组

时间:2016-11-01 12:01:13

标签: ajax laravel routing

javascript代码在对象数组上使用“map”方法来提取文本值:

var checked_leaves = checked_ids.filter(function(elm) {
        if (elm.children.length == 0)
            return elm;     
        }).map(function(elm, index) {
            return elm.text.trim();
        });

使用ajax(使用Vue http)

将此字符串数组发送到Laravel路由
this.vm.$http.get(this.el.action + checked_leaves).then((response) => {

        console.log(response);
        //this.vm.speciesDetails = JSON.parse(response.data);

    }, (response) => {

    });

this.el.action是api / taxonomytospecies /且相应的Route是:

Route::get('api/taxonomytospecies/{ids}', 'TaxonomyController@getSpeciesFromTaxonomy');

在TaxonomyController中:

public function getSpeciesFromTaxonomy($ids) {

    // Eloquent job to retrieve the data from the DB
}

1)有没有更好的方法来传递一个值数组,比如我从javascript代码中获取的值(它们是很多字符串)到控制器的路径?

2)我收到内部500错误。该错误表明该调用如下:

API / taxonomytospecies / NAME1,NAME2 NAME3,NAME4,NAME5

但我不知道如何解决这种错误

2 个答案:

答案 0 :(得分:0)

我建议您使用post请求代替get,因为数据很大。

您可以将数据作为数组发送到服务器。

var data = {ids: checked_leaves};

然后在data请求中发送post变量。

在您的控制器中,您可以获取数据:

public function getSpeciesFromTaxonomy() {
   $ids = request()->get('ids') // returns an array.

  // Eloquent job to retrieve the data from the DB
}

你的路线应该是:

Route::post('api/taxonomytospecies', 'TaxonomyController@getSpeciesFromTaxonomy');

答案 1 :(得分:0)

解决方案是将Route设置为:

Route::get('api/taxonomytospecies/', 'TaxonomyController@getSpeciesFromTaxonomy');

Vue-resource请求为:

this.vm.$http.get(this.el.action, {params: { ids: checked_leaves } }).then((response) => {

但我不明白为什么。