Javascript 尝试在Laravel 5.4框架中使用制表器向数据表传递值

Javascript 尝试在Laravel 5.4框架中使用制表器向数据表传递值,javascript,php,laravel,Javascript,Php,Laravel,所以我使用一个控制器将一个值传递给这样一个视图 use App\Products; use Illuminate\Http\Request; class MyController extends Controller public function index() { $main = Products::all(); return view('application.minierp', compact('main')); } 当我尝试接收这样的值时 <div i

所以我使用一个控制器将一个值传递给这样一个视图

use App\Products;
use Illuminate\Http\Request;

class MyController extends Controller
    public function index()
{
    $main = Products::all();
    return view('application.minierp', compact('main'));
}
当我尝试接收这样的值时

<div id="minierp-table">
    <script type="text/javascript">

        var tabledata = {{ $main }}

        //load sample data into the table
        $("#minierp-table").tabulator("setData", tabledata);

    </script>
</div>
var tabledata = <?php include '/home/vagrant/code/minierp/resources/assets/ajax/data.php' ?>
data()的函数就是这样

namespace App\Http\Controllers;

$dataPull = new AlscoDBsController;
echo $dataPull->data();
public function data()
{
    $main = Products::all();
    return $main;
}
但是我需要它使用控制器来工作,这样我就可以将数据正确地传递给它,并使用Laravel来使用它。 如果您有任何建议,请告诉我。

更改此行

var tabledata = {{ $main }}

解释-当你回音时,它只调用
\uuu toString
方法要使用它,您需要创建一个javascript对象或javascript理解的值

试一试


将视图的值添加到数组中

return view('application.minierp', ['main'=>json_encode($main)]);
然后,在视图文件中,在Javascript中使用:

var tabledata = {!! $main !!};
  • 请参阅本教程,了解如何将数据传递到视图:

除了这个,我没有改变任何其他东西,它成功了

var tabledata = {!! $main !!};

在HTML中的“”标记更改为“”标记之前,通过添加!!修复了此问题。第二个方法是使用两个括号{{}向数据集添加一个不需要的括号并将其打断。通过删除一组括号,它将正确呈现。

使用此代码返回json格式的数据
return response()->json($main)
当我加载它并查看HTML时,我实际上尝试了这个方法。表不存在,但它说它试图在第一个表中加载它。数据是它试图给它的,在这种情况下,第二个是应该给它的var tabledata=[{“id”:1,“item”:“000-005”,“um”:“EA”,“package”“:1,等等.//var tabledata=[{“id”:1,“item”:“000-055”,“um”:“EA”,“package”:1,“vendor”:467,“class”:“priceclass”:“FAB”,“vendor item”:“000-005”,“added”:“1993检查视图源代码中的js是否损坏,这将无法工作,因为{}转义Json。您需要使用{!!!!}”这样Json就不会被转义。同样,也不需要进行Json编码,因为当输出为stringsI时,laravel Json会对所有模型和集合进行编码。我尝试了相同的结果。真正的问题是,当laravel将变量传递给所有的“(引号)时,它们都会变成一个“tag如果您不想对html实体进行编码,例如:
<>”
,请在视图中使用以下语法:
{!!$main!!}
为什么否决投票?这是唯一对OP有效的解决方案!哇
var tabledata = {!! $main !!};
var tabledata = {!! $main !!};