2016-07-06 15 views
1

でJavascriptの変数を渡しますAjaxを使って、この:Laravelブレードは、私は私のPHPのループで変数としてjavascriptの変数を渡すことができますどのようにPHP

 /** 
     * 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はスライダー(ジャバスクリプトから動的な値であり、 jquery ui slider) – utdev

+0

明確にするために、「機能しない」p芸術とは、コントローラから「NO Ajax」が返ってきたことを意味しますか? – apokryfos

答えて

1

PHPはページがブラウザにヒットする前でも作業を終えているので、別のリクエストをせずにJavascriptからPHPに変数を渡すだけでは不可能です。検討する。

A)ループをJavascriptに移動する。 Vue.js,AngularReactなどのUIライブラリを使用することを検討してください。

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の中にある '

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 

//レイアウト(ジャバスクリプトが頭や体、すなわち、レイアウトのどこにでも行くことができます:

<!DOCTYPE html> 
<html> 
<body> 
    @yield('content') 
    @yield('javascript') 
</body> 
</html> 
関連する問題