【发布时间】:2021-10-26 16:53:46
【问题描述】:
我正在创建一个 Laravel 网络应用程序中的以下代码。
function approverDelete(ctl) {
var id = $(ctl).data("id");
// Call Web API to delete a approver
alert(id) // This gives expected result
$.ajax({
url: "{{ route('delete.approvers', 'id') }}",
type: 'DELETE',
success: function (approver) {
$(ctl).parents("tr").remove();
},
error: function (request, message, error) {
handleException(request, message, error);
}
});
}
id 应该被计算为一个整数,如果我在上面放置一个 alert(id),我会在警报中得到预期值。
但是,当此代码运行时,实际请求的 url 被发送到 http://example.com/admin/approvers/delete/id 而不是预期的 http://example.com/admin/approvers/delete/9(或任何 id 值)
如果我将url: "{{ route('approvers.delete', 'id') }}," 替换为url: "http://example.com/admin/approvers/delete/"+id,,它将完全按预期工作。
据我所知,它应该适用于命名路由方法,事实上,如果我在使用命名路由方法时删除id,它会因缺少参数而出错。
编辑:添加请求的源视图
EDIT2:添加更多信息
因此,问题似乎在于 Larvel 将 "{{ route('delete.approvers', 'id') }}" 视为仅在刀片中使用。
如果我添加
@php
$id = "test";
@endphp
在脚本块之前并更改为"{{ route('delete.approvers', $id) }}" $id 将被评估为变量并将请求发送到预期的url。
【问题讨论】:
-
你试过没有 qoutes 到 id 吗?
url: "{{ route('approvers.delete', id) }}" -
我做到了。我已经把
id包起来了。当我不将id括在引号中时,它会作为未定义的常量返回,但正如我所说,我可以在同一函数中在此之前的alert(id)1 行字面上给出预期的结果。我将在我的问题中添加更多代码 -
我会这样写路由: route('delete.approvers', ['id' =>id] )
-
在这里试试这个反引号{{ route('delete.approvers', ${id} ) }} 反引号在这里关闭,我不能在 cmets 中使用反引号