Php 如何从输入中获取值并发送到路由?

Php 如何从输入中获取值并发送到路由?,php,jquery,html,laravel,Php,Jquery,Html,Laravel,我在模态窗口的输入中获得了值,我不能将其用于路由 我尝试使用jQuery获取值,但它对我不起作用 模式窗口HTML: <div class="modal fade" id="deleteValueModal" role="dialog"> <div class="modal-content"> <div class="modal-header"> ... </div>

我在模态窗口的输入中获得了值,我不能将其用于路由

我尝试使用jQuery获取值,但它对我不起作用

模式窗口HTML:

<div class="modal fade" id="deleteValueModal" role="dialog">
    <div class="modal-content">
        <div class="modal-header">
            ...
        </div>
        <div class="modal-body">
            <form method="post" action="{{route('delete_value', $('#valueId').val())}}" id="deleteValueForm"                       
                        enctype="multipart/form-data">                        
                <label>Are you sure that you want to delete? 
                </label>        
            </form>
        </div>
        <div class="modal-footer">
            <input type="submit" id="valueId" name="valueId" value="" form="deleteValueForm" class="btn btn-primary">
        </div>
    </div>
</div>
$(document).on("click", ".open-deleteValueModal", function () {
    const myValue = $(this).data('id');
    $(".modal-body #valueId").val( myValue );
IDE显示jQuery代码的警告,格式为:

Expected: identifier
Laravel也显示jQuery的错误:

syntax error, unexpected '(', expecting variable (T_VARIABLE) or '{' or '$' (View: ... )

如果我是你,我会像这样改变模态打开的形式动作
$('#deleteValueForm').attr('action',{{route('delete#value',$('#valueId').val()})

$(文档)。在(“单击”,“打开deleteValueModal”,函数(){
const myValue=$(this.data('id');
$('#deleteValueForm').attr('action',{{route('delete#value',myValue)})
})

这样,当你点击一个简单的表单时,表单已经有了一个提交路径
按钮

假设指定路线的
删除值
如下所示
/posts/delete/{id}
。然后,应使用默认值(例如“0”)呈现窗体,如下所示:

{{route('delete_value', 0)}}
$(document).on("click", ".open-deleteValueModal", function () {
    const myValue = $(this).data('id');

    // Optional validation
    if (parseInt(myValue) <= 0 || myValue == "") {alert('Some validation message');return;}
    // Get the default route
    var route = $("#deleteValueForm").attr("action");
    // Remove the current ID value
    route = route.substr(0, route.lastIndexOf("/")+1);
    // Attach the new ID value to the route
    route += myValue;
    // Update the form action with the new route
    $("#deleteValueForm").attr("action", route);
});
现在,在刀片渲染之后,动作应该如下所示:

http://localhost:8000/posts/delete/0
最后,您可以使用jQuery直接更新操作值,如下所示:

{{route('delete_value', 0)}}
$(document).on("click", ".open-deleteValueModal", function () {
    const myValue = $(this).data('id');

    // Optional validation
    if (parseInt(myValue) <= 0 || myValue == "") {alert('Some validation message');return;}
    // Get the default route
    var route = $("#deleteValueForm").attr("action");
    // Remove the current ID value
    route = route.substr(0, route.lastIndexOf("/")+1);
    // Attach the new ID value to the route
    route += myValue;
    // Update the form action with the new route
    $("#deleteValueForm").attr("action", route);
});
$(文档)。在(“单击”,“打开deleteValueModal”,函数(){
const myValue=$(this.data('id');
//可选验证
如果需要(parseInt(myValue)数组]或$(变量)

注:
只有在加载后才能更改DOM元素属性。

JS代码中缺少右括号、圆括号和分号。Put
})
在JS代码的末尾。@rmalviya,我错过了这里,这是个疑问。在我的程序中,我找不到
。在从JS引用的HTML中打开deleteValueModal
#valueId
。请共享完整的代码。@rmalviya
valueId
是模态页脚中
input
的名称。
打开deleteValueModal
是打开modal
deleteValueModal
提供完整的代码可以帮助回答您的问题。在呈现刀片并在浏览器中显示之后,PHP刀片代码
{route('delete_value',myValue)}
在这种情况下是无用和错误的。哦,是的
var changeUrlResource=函数(url,id){return url.replace(/-?\d+/,id);}
这样他们就可以
更改urlResource({route('delete_value',-1)}),myValue)
或者,你可以用一个选项id参数定义路由。/posts/delete/{id?}这样,在html中呈现路由时不必设置任意默认值。当然!可选参数会更容易,但可选参数将添加两种模式
http://localhost:8000/posts/delete/1
http://localhost:8000/posts/delete
当需要时,参数将只遵循一种模式
http://localhost:8000/posts/delete/1
。至于需要ID的上下文(delete需要ID),我同意。我想这是一个意见问题。您可以设置一个任意值,您可能希望检查服务器端并引发异常或检查缺少的值。