Laravel Javascript图像交换下拉列表

Laravel Javascript图像交换下拉列表,javascript,laravel-5,Javascript,Laravel 5,现在我正在使用Laravel 5.0开发电子商务购物网站,这是我的fyp,还有很长的路要走。。无论如何 我制作了产品展示页面 这是我的控制器: public function getView($id) { return view('store.show')->with('products', Product::find($id))->with('categories',Category::all())->with('db',Product::all())-&g

现在我正在使用Laravel 5.0开发电子商务购物网站,这是我的fyp,还有很长的路要走。。无论如何

我制作了产品展示页面

这是我的控制器:

     public function getView($id)
{
    return view('store.show')->with('products', Product::find($id))->with('categories',Category::all())->with('db',Product::all())->with('options', Gambar::where('product_id','=',$id)->lists('name', 'img'));
}
如您所见,在这一行的末尾有代码列表('name','img')

它会将列名和图像值列成一个列表

一切都是完美的作品接受,我需要作出选择与图像变化下拉列表

查看我的下拉列表和imageswap的代码:

    <div class="form-group">

     {!! Form::open(array('url' => 'foo/bar')) !!}
     {!! Form::label('Link Category') !!}<br />
     {!! Form::select('product_id',(['0' => 'Select an Option'] + $options),null,['class' => 'form-control', 'id' => 'dlist', 'onChange' => 'swapImage()']) !!}
     {!! Form::close() !!}

     <script type="text/javascript">
     function swapImage(){
     var image = document.getElementById("imageToSwap");
     var dropd = document.getElementById("dlist");
     image.src = dropd.value;
     };
     </script>
    </div>

{!!Form::open(数组('url'=>'foo/bar'))
{!!Form::label('Link Category')!!}
{!!Form::select('product_id',(['0'=>'select an Option']+$options),null,['class'=>'Form control','id'=>'dlist','onChange'=>'swapImage()')!!} {!!Form::close()!!} 函数swapImage(){ var image=document.getElementById(“imageToSwap”); var dropd=document.getElementById(“dlist”); image.src=dropd.value; };
根据选择(产品->图像是主图像,而不是下拉列表中的种子)显示图像的代码:

 <img id="imageToSwap" src="{{asset($products->image)}}"  />
image)}}/>
controller中的列表流可以工作,但它在源chrome视图中提供了以下功能:

<img id="imageToSwap" src="img/upload/20-3-291-image-1.jpg"  />

因此,图像不会出现在页面中,它应该如下所示:

<img id="imageToSwap" src="localhost:8000/img/upload/20-3-291-image-1.jpg"  />


问题是,如何使用laravel asset{{asset()}返回“img”,以便图像能够完美显示?

问题在于laravel和javascript之间的通信

正如您所指出的,您使用的是列表('name','img'):资产前缀不会添加到那里

因此,当您执行
image.src=dropd.value;
操作时,图像的源没有资产前缀

我认为有两种可能性:

  • 您可以在发送列表之前对列表进行一些处理:
    列出('name','img')->映射(资产)
    (使用该方法--不确定是否可用于laravel 5.0)
  • 或者将其添加到javascript中:
    image.src=“{{asset()}}/”+dropd.value;
apply image.src=“{asset()}}/”+dropd.value时出错;helpers.php第81行中出现错误异常:在第100行的C:\xampp\htdocs\myweb2\storage\framework\views\a3ea3da5b741ea4eca39686d1e2d05b0中调用的asset()缺少参数1,并已定义(视图:C:\xampp\htdocs\myweb2\resources\views\store\show.blade.php)