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
但我不知道如何解决这种错误
答案 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) => {
但我不明白为什么。