2016-07-06 178 views
1

我如何传递一个JavaScript变量作为变量在我的PHP循环:Laravel刀片通过JavaScript变量在PHP

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

 var myJsVar = 100; 

     @for ($i = 0; $i<myJsVar; $i++) 
      ... some code 
     @endfor 

而且我试着解决这与AJAX:

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

它返回我成功的功能,

而且我确实牛逼他在我的控制器中:

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

它没有工作。

我不知道如何继续,希望有所帮助。

+0

从哪里得到的'myJsVar'的价值?我的意思是它是静态的还是来自于数据库或其他什么东西? –

+0

我简化了代码,myJsVar是从滑块的动态值(JavaScript的, jQuery的用户界面滑块) – utdev

+0

澄清,“不行”p艺术意味着你从控制器返回“没有Ajax”? – apokryfos

回答

1

甚至在页面碰到浏览器之前,PHP已经完成了它的工作,所以在不做另一个请求的情况下将一个变量从Javascript传递到PHP是根本不可能的。考虑

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

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

C)通过Ajax请求

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

而在你的控制器执行所述呈现逻辑:

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

    return view('view-with-a-loop')->with('value', $value); 
} 

小心使用后者的方法XSS明智的。

+0

我的循环实际上在我的Javascript里面,像这样''如果你的意思是这样,myJsVar的内容是由滑块创建的 – utdev

+0

谢谢我会检查出来 – utdev

+0

好吧,如果我'dd(价值)'我得到空 – utdev

0

我使用刀片中的部分来添加JavaScript,然后将其拉入布局。下面通过整数/字符串/模型集合,例如显示例如:

//刀模板

@extends('layouts.app') 

@section('javascript') 

<script type="text/javascript"> 
    var myInteger = {!! $myInteger !!}; 
    var myString = '{!! $myInteger !!}'; 
    var myObject = {!! json_encode($models) !!}; 
</script> 

@endsection 

@section('content') 
... 
@endsection 

//布局(在JavaScript可以去任何地方在布局,即头部或身体:

<!DOCTYPE html> 
<html> 
<body> 
    @yield('content') 
    @yield('javascript') 
</body> 
</html>