Laravel Blade 在 php 中传递 Javascript 变量

utd*_*dev 5 javascript php variables ajax laravel

如何将 javascript 变量作为 php 循环中的变量传递:

像这样的东西(显然不起作用):

        var myJsVar = 100;

        @for ($i = 0; $i<myJsVar; $i++)
            ... some code
        @endfor
Run Code Online (Sandbox Code Playgroud)

此外我尝试用ajax解决这个问题:

        /**
         *  Get slider value
         */
        $.ajax({
            type: 'GET',
            url: myUrl,
            data: myJsVar,
            success: function (option) {
                console.log(myJsVar);
            }
        });
Run Code Online (Sandbox Code Playgroud)

它返回我成功的函数,

此外,我在控制器中执行了此操作:

public function prod(Request $request)
{
    if ($request->ajax()) {
        $ajax = "AJAX";
        dd($ajax);
    } else {
        $ajaxN = "NO Ajax";
        dd($ajaxN);
    }
}
Run Code Online (Sandbox Code Playgroud)

它不起作用。

我不确定如何继续,希望得到一些帮助。

rdi*_*diz 3

PHP 甚至在页面到达浏览器之前就已经完成了它的工作,因此将变量从 Javascript 传递到 PHP 而不执行另一个请求是根本不可能的。考虑

A)将循环移至 Javascript。考虑使用一些 UI 库,如Vue.jsAngularReact

B)将 的内容移至myJsVarPHP。如果它取决于用户输入或浏览器渲染,那是不可能的。

C)通过 Ajax 请求执行渲染逻辑

$.ajax({
            type: 'GET',
            url: myUrl,
            headers: {'X-Requested-With': 'XMLHttpRequest'},
            data: {value: myJsVar},
            success: function (response) {
                $(someContainer).html(response);
            }
        });
Run Code Online (Sandbox Code Playgroud)

在你的控制器中:

public function prod()
{
   $value =  Request::get('value');

   return view('view-with-a-loop')->with('value', $value);
}
Run Code Online (Sandbox Code Playgroud)

小心后一种方法 XSS-wise。