我正在尝试使用jQuery动态构建一个laravel url。在onclick事件中运行的代码如下:
var tt = $(this).val();
var EditUrl = '{{ url("/productionentry/' + tt + '/edit") }}';
console.log(tt + EditUrl);
控制台中的输出是
11http://localhost/pms/public/productionentry/' + tt + '/edit
正如您所看到的,我得到tt
而不是其值(11)。我不知道为什么。我已经尝试将单引号更改为double和double to single。它不起作用。
答案 0 :(得分:1)
那么,这里发生了什么。 Laravel允许您将PHP代码放在模板中,并根据请求解析它。
var tt = $(this).val();
var EditUrl = '{{ url("/productionentry/' + tt + '/edit") }}';
console.log(tt + EditUrl);
由PHP解析后将变为
var tt = $(this).val();
var EditUrl = 'http://localhost/pms/public/productionentry/' + tt + '/edit';
console.log(tt + EditUrl);
这里的问题是函数url()将用HTML字符替换单个AND双引号。因此,让url()返回与您的tt的javascript插入兼容的结果将非常困难。如果javascript运行此结果,它将写入控制台:
11http://localhost/pms/public/productionentry/' + tt + '/edit
那你能做什么?您可以在URL中插入占位符,该占位符是唯一的,并由具有实际值的javascript替换。
var tt = $(this).val();
var EditUrl = '{{ url("/productionentry/:insertID:/edit") }}';
EditUrl = EditUrl.replace(':insertID:', tt);
console.log( EditUrl);
应返回
http://localhost/pms/public/productionentry/11/edit
注意:未经测试但我希望您明白