Javascript:捕获要在Laravel应用程序的表单操作字段中使用的值

Javascript:捕获要在Laravel应用程序的表单操作字段中使用的值,javascript,laravel,bootstrap-modal,Javascript,Laravel,Bootstrap Modal,我有一个带有Javascript函数的Laravel应用程序,它捕获一些数据,我用这些数据动态填充一个模式框 $(function() { $('#edit-auction-modal').on("show.bs.modal", function (e) { var auctionId = $(e.relatedTarget).data('id'); console.log(auctionId); //auctionId has the correct va

我有一个带有Javascript函数的Laravel应用程序,它捕获一些数据,我用这些数据动态填充一个模式框

$(function() {
    $('#edit-auction-modal').on("show.bs.modal", function (e) {
     var auctionId = $(e.relatedTarget).data('id');
     console.log(auctionId);
     //auctionId has the correct value for the selected auction. This needs to be used in the View file
    });
});
在视图文件中,我有一个带有表单的模式框(用于更新字段)


{{csrf_field()}}
{{method_字段('PUT')}
....
使用上述代码,当它尝试发送到“auctions/auctionId/update”而不是“auctions/1/update”或“auctions/2/update”时,不会更新任何内容

如何更改此设置,以便在视图中使用auction0id(来自JS文件)的值


我想这应该很简单,但我的JS技能低于平均水平…

你可以尝试以下方法:

$(function() {
    $('#edit-auction-modal').on("show.bs.modal", function (e) {
        var auctionId = $(e.relatedTarget).data('id');
        var pattern = /(auctions\/)(.+)(\/update)/;
        var action = $('form').attr('action');
        $('form').attr('action', action.replace(pattern, "$1" + auctionId + "$3"));
    });
});

说明:

该视图在服务器端处理,并定义最初发送到浏览器的html。您不会运行任何PHP代码超过这一点。由于
auctionId
仅作为客户端事件的结果而存在,因此修改
action
属性的唯一工具是JavaScript

因此,在视图中,您只包含JS脚本,我假设您已经包含了。另外,您可以将原始操作编写为
{!!route('admin\u auctions\u update',['id'=>0])!!}
0
作为一些默认占位符值)


最后,正则表达式解释:括号定义了捕获组,您可以通过数字访问这些捕获组。因此,第一个包含要替换的id之前的字符串内容,第二个包含id本身,第三个包含字符串的其余部分。

您可以尝试以下操作:

$(function() {
    $('#edit-auction-modal').on("show.bs.modal", function (e) {
        var auctionId = $(e.relatedTarget).data('id');
        var pattern = /(auctions\/)(.+)(\/update)/;
        var action = $('form').attr('action');
        $('form').attr('action', action.replace(pattern, "$1" + auctionId + "$3"));
    });
});

说明:

该视图在服务器端处理,并定义最初发送到浏览器的html。您不会运行任何PHP代码超过这一点。由于
auctionId
仅作为客户端事件的结果而存在,因此修改
action
属性的唯一工具是JavaScript

因此,在视图中,您只包含JS脚本,我假设您已经包含了。另外,您可以将原始操作编写为
{!!route('admin\u auctions\u update',['id'=>0])!!}
0
作为一些默认占位符值)


最后,正则表达式解释:括号定义了捕获组,您可以通过数字访问这些捕获组。因此,第一个包含要替换的id之前的字符串内容,第二个包含id本身,第三个包含字符串的其余部分。

谢谢您的建议。视图文件中需要包含的内容。会不会只是这个:?让我明白:1美元和3美元是什么?我知道原理。虽然代码应该动态更新操作,但它似乎总是使用原始操作(id=0)。我添加了一个console.log(action);JS文件中的语句,它总是确实注销。实际上,请尝试记录
action.replace(模式,“$1”+auctionId+“$3”)
,因为这不会更改
action
的值。另外,它应该是
localhost:5000/admin/auctions/123/update吗?它可以工作。作为调试的一部分,我确实更改了路由(没有/update)。我忘了加回去,所以你的图案不匹配。我现在修好了,它按照你的建议工作!非常感谢…为我节省了不少时间!太好了,很高兴能帮上忙谢谢你的建议。视图文件中需要包含的内容。会不会只是这个:?让我明白:1美元和3美元是什么?我知道原理。虽然代码应该动态更新操作,但它似乎总是使用原始操作(id=0)。我添加了一个console.log(action);JS文件中的语句,它总是确实注销。实际上,请尝试记录
action.replace(模式,“$1”+auctionId+“$3”)
,因为这不会更改
action
的值。另外,它应该是
localhost:5000/admin/auctions/123/update吗?它可以工作。作为调试的一部分,我确实更改了路由(没有/update)。我忘了加回去,所以你的图案不匹配。我现在修好了,它按照你的建议工作!非常感谢…为我节省了不少时间!太好了,很高兴我能帮忙