【问题标题】:Laravel : How to pass variable from View (javascript) to Controller? [duplicate]Laravel:如何将变量从视图(javascript)传递到控制器? [复制]
【发布时间】:2020-04-28 09:56:20
【问题描述】:

我对 Laravel 非常陌生(-0 级)。我们的后端人员将它用于我们正在开发的网络应用程序。所以在谷歌搜索之后,我终于想出了如何将变量从控制器传递到视图。现在我需要从视图传递到控制器。我看到有一些关于这个的问题,但它被问/回答的方式我真的不明白。所以我现在拥有的是

控制器:

public function index()
{
    $title = "Congratulations";
    $messageOne = "You've learned something new!";
    $messageTwo = "Remember all the tips!";
    return view('pages.index',compact('title','messageOne'));
}

查看(我希望显示字符串的位置):

<div>
    {{$title}}
    <br>
    {{$messageOne}}
</div>

这些消息(messageOne 和其他消息)将根据通过 js 控制的按钮单击而改变。我在想在 js 函数中我可以设置一个变量,例如:

$('thebutton').click(function(){
    var buttonclicked = "learning"; 
}) 

然后将该变量发送到控制器,然后在控制器中(我不确定如何对其进行编码,但是..)检查 buttonclicked 变量的字符串是什么,并根据字符串返回查看消息字符串。从搜索中我还必须调整路线(我也不确定)?

这种流动可能吗?否则,将不胜感激有关我如何做到这一点的建议。

更新 评论中指向另一个问题的建议链接有助于回答问题。此外,所有答案都在某种程度上有所帮助,所以我不确定该选择哪个。我只能选择 1 个吗?

【问题讨论】:

  • 您可以使用 AJAX 将值从客户端发送到服务器。由于您已经在使用 jQuery,请尝试 $.ajax()
  • 点击按钮后,用javascript更改文本是否简单得多?为什么需要将其发送到控制器?

标签: javascript php jquery laravel


【解决方案1】:

您可以使用$.ajax() 发送它的一种方式,或者您可以使用查询参数发送它的另一种方式,如下所示:

<a href={{ route('route-name', ['param 1' => 'Param 1 Value', ......]) }}Click me!</a>

然后在您的路线中定义您的路线如下。

Route::get('/url/{param1}/{param2}/.....', 'ControllerName@MethodName')->name('route-name');

然后转到您的控制器并像这样定义您的功能:

use Illuminate\Http\Request;
public function functionName(Request $request){
    // Get your variables from $request
    $param1 = $request->param1;
    $param2 = $request->param2;
}

【讨论】:

    【解决方案2】:

    例如,在 JS 中,您应该使用 ajax 将数据从视图传递到控制器

    $('thebutton').click(function(){
        var buttonclicked = "learning"; 
    
        //her xyz your url 
        $.get( "xyz", { value: buttonclicked  } )
         .done(function( data ) {
          //write your code after success
        });
    });
    

    然后在控制器中从 ajax 请求中获取值

    public function test(Request $request){
      dd($request->value);
    }
    

    【讨论】:

      【解决方案3】:

      查看到控制器。您可以通过 ajax 调用发布数据。 或将表单数据提交给控制器表单发布方法

      <form method="post" action="/controller" />
      
      <input type="text" value="100" id="txt" name="txt" />
      
      <button type="submit"/>
      
      </form>
      

      一旦提交数据 100 转到控制器。通过这种方式,我们可以将数据传递给控制器​​。

      JS 到 Controller 传递数据

      var pincode = $('#pincode').val();
              $.ajax({
                 type:'POST',
                 url:"{{ route('post_data') }}",
                 data:{"_token": "{{ csrf_token() }}","postal":pincode},
                 success:function(data){
                    //Success code
                 }
              });
      

      控制器代码如下

      public function post_data(Request $request)
          {
              $postal_code = addslashes($request->all()['postal']);
          }
      

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2014-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-09
        • 1970-01-01
        • 2011-09-14
        • 1970-01-01
        相关资源
        最近更新 更多