【问题标题】:How to get back ajax request sent to the controller on the view如何在视图上取回发送到控制器的ajax请求
【发布时间】:2019-07-04 13:49:14
【问题描述】:

我有一个表格

<form id="myForm">
    <div class="button dropdown">
      <select name="languageSelected" required="required" id="languageselector">
        <option value="">Select the language</option>
        @foreach($reviewForm_language as $lang)
         <option value="{{$lang->id}}">{{$lang->name}}</option>
        @endforeach
      </select>

    </div>
</form>

在选择时;它发出一个ajax请求

 <script>    
   $(function() {
    // when select changes
    $('#languageselector').on('change', function() {
        // create data from form input(s)
        let formData = $('#myForm').serialize();

        // send data to your endpoint
        $.ajax({
            url: '/selected/languageId',
            method: 'post',
            data: formData,
            dataType: 'json', 
            success: function(response) {
                console.log(response); 
            }
        });
    });
  });
</script>

路线

Route::post('/selected/languageId','ProfileController@selectedLangId');

在控制器上

public function selectedLangId(Request $request)
{
    \Log::info("Was here");
    return response()->json(['success'=> $request->languageSelected]);
}

到目前为止效果很好。

如何将$request-&gt;languageSelected 传递给视图中的控制器?我想被分配为 PHP 变量以便在其他地方使用。

有人吗?

【问题讨论】:

  • 你应该已经可以在控制台看到它了。不刷新页面,继续使用 JavaScript。
  • @LucienDubois 我想在 PHP 中使用它...
  • @User101 你想返回一个视图作为响应吗?
  • @Md.SukelAli 我想将传递给控制器​​languageSelected的变量返回给视图
  • select 销毁 options 并在 ajax 成功后重建它。

标签: php ajax laravel laravel-5


【解决方案1】:

你已经发送了 ['success'=&gt; $request-&gt;languageSelected]

只需要在您成功调用刀片时打印它 console.log(response.success);

【讨论】:

  • 我的挑战是获取提交的请求并将其分配给要在刀片中使用的变量。我想将变量分配给 PHP
  • 您不能这样做,因为 PHP 变量仅存在于服务器端,而请求由服务器处理以构建对浏览器的响应,而不是在客户端。如果你想根据 ajax 响应在你的视图上做一些事情,你应该用 javascript 来处理它。
【解决方案2】:

如果您在 web.php 中注册了路由,则需要将 VerifyCsrfToken 中间件中的 url 列入白名单,如下所示

protected $except = [
    'url',
];

【讨论】:

  • 这件事处理得很好......请求正在访问控制器......我的挑战是获取提交的请求并将其分配给要在刀片中使用的 PHP 变量。跨度>
  • 我没有得到分配给变量部分,但如果你想在浏览器中显示。 ` $.ajax({ url: '/selected/languageId', 方法: 'post', data: formData, dataType: 'json', 成功: function(response) { $('.classname').text(response.成功) } });`
  • 我的意思是如何在浏览器上显示响应?
  • 你能告诉我你想要什么回复吗?
  • 我想使用 selected 选项根据选择显示不同的表单。我想将变量保存为 PHP 变量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 2011-10-25
  • 2021-12-20
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
相关资源
最近更新 更多