如何将变量从另一个函数传递到索引函数中的视图
Posted
技术标签:
【中文标题】如何将变量从另一个函数传递到索引函数中的视图【英文标题】:How to pass a variable from another function to the view in index function 【发布时间】:2017-10-23 22:08:45 【问题描述】:我想将findCity()
函数中的$data
变量与json 返回到索引函数中的视图。
请问我该怎么做?
class HomeController extends Controller
public function index(Request $request)
$countries = Location::select('country_name')
->groupBy('country_name', 'country_name')
->get();
$cities = Location::select('city_name','city_name')
->where('region_name', $request->region_name)
->groupBy('city_name', 'city_name')
->get();
$areas = Area::get()->toTree();
return view('home', compact('areas','countries', 'cities'));
public function findCity(Request $request)
$data = Location::select('city_name','city_name')
->where('region_name', $request->region_name)
->groupBy('city_name', 'city_name')
->get();
return response()->json($data);
Ajax 代码:
$(document).on('change','.regionName',function()
//console.log("hmm its change");
var cat_id=$(this).val();
//console.log(cat_id);
var div=$(this).parent();
var op=" ";
$.ajax(
type:'get',
url:'!!URL::to('findCityName')!!',
data:'region_name':cat_id,
success:function(data)
//console.log('success');
//console.log(data);
//console.log(data.length);
op+='<option value="0" selected disabled>Choose City</option>';
for(var i=0;i<data.length;i++)
op+='<option value=" route('user.location.store', $cities) ">'+data[i].city_name+'</option>';
div.find('.cityName').html(" ");
div.find('.cityName').append(op);
,
error:function()
);
);
);
【问题讨论】:
【参考方案1】:您可以将findCity()
设为静态方法并从index()
方法内部调用它:
public function index(Request $request)
// The rest of your code here...
// Calling the static method
$city = self::findCity($request);
return view('home', compact('areas', 'countries', 'cities', 'city'));
public static function findCity(Request $request)
$data = Location::select('city_name', 'city_name')
->where('region_name', $request->region_name)
->groupBy('city_name', 'city_name')->get();
return $data;
阅读更多关于static methods in the php documentation的信息。
【讨论】:
我试过了,但是 url 中的 ajax 函数得到了响应,但带有标题:HTTP/1.0 200 OK Cache-Control: no-cache Date @Camilo 为您的问题添加更多信息。你没有提到没有 AJAX 调用。使用 AJAX 调用哪个控制器方法?参数是什么? 代码太长了,我不知道怎么放在这里,但是我在数据库中有一个县、地区和城市表,我做了一个下拉菜单,从服务器获取城市和地区名称并使用您选择的城市更新 URL,这就是我的 Ajax 响应 不需要添加所有代码,只需添加相关部分即可重现您的问题。没有它,我将无法为您提供更多帮助。 我认为这应该在另一个帖子中【参考方案2】:您需要使用函数调用、传递和返回。像这个。我认为它可以帮助你。
class HomeController extends Controller
public function index(Request $request)
$countries = Location::select('country_name')
->groupBy('country_name', 'country_name')
->get();
$cities = $this->findCity($request)
$areas = Area::get()->toTree();
return view('home', compact('areas','countries', 'cities'));
public function findCity($request)
$data = Location::select('city_name','city_name')
->where('region_name', $request->region_name)
->groupBy('city_name', 'city_name')
->get();
return response()->json($data);
【讨论】:
我试过了,但是 url 中的 ajax 函数响应但带有标题:HTTP/1.0 200 OK Cache-Control: no-cache Date以上是关于如何将变量从另一个函数传递到索引函数中的视图的主要内容,如果未能解决你的问题,请参考以下文章
将从 HTTP 请求数据声明的数据/变量传递到另一个视图控制器