代码之家  ›  专栏  ›  技术社区  ›  HessamSH

如何使用javascript将HTML选择器的选项发送到控制器中?

  •  3
  • HessamSH  · 技术社区  · 7 年前

    我在视图中的选择器中有多个城市选项,我需要在控制器方法中使用城市名称。我要使用的javascript函数将在单击按钮时触发。以前,我用过

    window.location = "/results";
    

    在我的javascript中,“results”是我在其中使用控制器的路由。但是你显然不能用这种方式向控制器发送任何数据(或者你能吗?)。我在网上找到的唯一方法是使用Ajax,但我希望尽可能远离Ajax。那么,我如何才能做到这一点呢?

    1 回复  |  直到 7 年前
        1
  •  2
  •   HessamSH    7 年前

    由于没有人回答这个问题,我试着运气,找到了解决办法。所以我们需要做的是,首先获取所需选择器的值,然后使用URL将其发送到控制器中。以下是通过单击按钮触发的javascript函数:

    var city = document.getElementById('citypicker').value;
    window.location.href = "/results/"+city;
    

    第一行检索ID为“citypicker”的选择器的值,并将其存储在 城市 变量,然后我们重定向到一个包含该变量的URL 城市 变量。所以每次我们选择另一个值时,这个URL都会改变。

    在路由中,我们将此URL定义为:

    Route::get('/results/{city}', 'ResultsController@city');
    

    城市是可变的,这意味着它可以更改,并且可以作为结果控制器中城市方法的输入。所以方法如下:

    public function city($city) {
        //code here
    }
    

    也没有使用Ajax。希望这有帮助。