2016-11-06 84 views
0

我的路线是这里试图在路由参数传递JS值:Laravel 5

Route::get('/Service-Areas-Details/{ID}', 
    array(
     'uses' => 'Web\ServiceAreas\[email protected]', 
     'as' => 'ServiceAreaDetails' 
    ) 
); 

下面是我在Laravel代码。

<script language="javascript"> 
    $(document).ready(function() { 
     var $_token   = "{!! csrf_token() !!}"; 

     var data = { 
      "_token"  : $_token, 
     }; 
     $.ajax({ 
      url:   '{{URL::route("apiServiceAreas")}}', 
      method:   "POST", 
      async:   true, 
      data:   JSON.stringify(data), 
      contentType: "application/json; charset=utf-8", 
      success: function (result) { 
       $.each(result.Data, function(key, ServiceArea) { 
        var URL = '{!! route("ServiceAreaDetails", ["ID" => 1]); !!}'; 
       }); 
      } 
     }); 
    }); 
</script> 

是什么的讨论意义呢?

此代码中的值= 1是静态的。我们可以使它动态吗? var URL = '{!! route("ServiceAreaDetails", ["ID" => 1]); !!}';

什么问题?

路由功能是服务器端编码。有没有什么办法可以将js内部循环传递给这个服务器端函数参数?

的js值将是ServiceArea.ID

+0

棘手一个所讲述。最好的我能想到的是将它作为查询参数追加。 'var URL ='{{route(“ServiceAreaDetails”); }}?ID ='+ ServiceArea.ID;' – tanerkuc

+0

否。因为路由参数不是可选的。 – Pankaj

+0

那么你会改变你的路线,使其可选。否则,您可以手动构建URL。 'var URL ='/ areas /'+ ServiceArea.ID;' – tanerkuc

回答

1

可能的解决方法:使用0作为占位符ID,并根据需要进行更换。

根据需要为正则表达式添加限制,或者在您替换URL的错误部分时使用更独特的占位符。

  $.each(result.Data, function(key, ServiceArea) { 
       var URL = '{!! route("ServiceAreaDetails", ["ID" => 0]); !!}'; 
       URL = URL.replace(/0/, ServiceArea.ID); 
      }); 
+0

Upvoted从我身边。非常感谢你。 – Pankaj

0

我刚刚用2个选项修复了它。

方法1种

var asset = '{!! URL::asset("Service-Areas-Details") !!}'; 

方法2

通过使参数可选通过tanerkuc

Route::get('/Service-Areas-Details/{ID?}', 
    array(
     'uses' => 'Web\ServiceAreas\[email protected]', 
     'as' => 'ServiceAreaDetails' 
    ) 
);