在 blade 语法上传递 javascript var

Pass javascript var on blade syntax

我在使用 laravel 将 vars 传递到 blade 语法时遇到问题,这是 js 代码

var e = document.getElementById("select-city");
var idCity = e.options[e.selectedIndex].value;
var map = L.map('map').setView([{{ $region->cities->find(idCity)->lat }}, 10.2941], 15);

所以我想传递 idCity js var 作为 find() 方法的参数。

我将使用 ajax 来解释这样做。 函数和变量名只是示例。你可以自己修改。

在routes.php文件中

Route::post('/regionCitiesFind', "yourController@finderOrSomething");

在你的控制器中

public static function finderOrSomething( Request $request){

  $result $region->cities->find( $request->idCity )->lat; // as your code
  return $result;
}

在您看来 (blade) - ajax

var e = document.getElementById("select-city");
var idCity = e.options[e.selectedIndex].value;


$.ajax({
    type: "post",
    url: "./regionCitiesFind",
    headers: { 'X-CSRF-Token': "{{ csrf_token() }}" },
    data: "_token={{ csrf_token() }}&idCity="+id,
    success: function(msg){

                var map = L.map('map').setView([ msg, 10.2941];

            }
 });

我试着解释在 laravel 中使用 ajax 的主要结构。您的项目可能存在语法错误或遗漏某些内容。

为了扩展@Erkan 的回答,我总是将 blade 代码用双引号括起来并分配给一个 var,如下所示:

var v = "{{ $region->cities->find(idCity)->lat }}";

然后你可以用 v、parseFloat、parseInt 等做任何事情...