如何在我的JQUERY提交中添加额外数据

本文关键字:添加 数据 提交 我的 JQUERY | 更新日期: 2023-09-27 17:57:46

在我的剃刀视图中,我使用的是Html.BeginForm。在它中,我有两个元素,当我设置clic时,应该提交表单,但我需要添加一个额外的字符串参数。

@using (Html.BeginForm("Index", "Quiz", FormMethod.Post, new { id = "form" }))
{
    ...
}
    [HttpPost]
    public ActionResult Index(string parameter, QuizCompletedViewModel q)  //FormCollection f)
    {            
        ...
        if (button.Equals("d"))
        {
            ...
            return RedirectToAction("ShowResults", new { testId = Quiz.QuizId, answeredTest = answeredId });
        }
        else
        {
            ...
            return RedirectToAction("Index", "Dashboard");
        }
    }

因此,在我的jquery函数中,我使用$("#element").submit(),并且参数parameter始终为null(这很正常)。如何使用JQUERY为parameter添加额外数据?

注意:我没有使用AJAX。

如何在我的JQUERY提交中添加额外数据

在表单sumbit上尝试如下:

        $("form").submit(function(){
           $.ajax({     
                type: 'POST',  
                url: "/Quiz/Index",
                dataType: "json",
                data: $("form").serialize() + '&parameter=param1' ,   
                success: function () { 
                    alert("Successful"); 
                }
                error: function(){
                    alert('error');
                }
            }); 
        });

希望能有所帮助。


编辑

在jQuery函数中这样尝试:

$('form').append('&param=a');

您可以在表单中添加一个具有所需名称和值的隐藏输入。该值将与所有其他表单项一起提交。

<input type="hidden" name="someName" value="someValue" />

编辑评论:

如果你把每个提交按钮的值作为一个属性,你可以在点击处理程序中获取它,然后在表单中添加一个带有值的隐藏字段

$(function(){
   $('#form input[type=submit]').click(function(e) {
       var val = this.getAttribute("data-param");
       $(this).closest('form').append('<input type="hidden" name="param" value="' + val + '" />");
   });
});

没有测试,只是一种预感。希望表单提交事件不会在按钮单击事件之前被触发。此外,您还需要处理输入事件和按键等。

为什么不想使用ajax?

根据您的评论,对您来说最简单的事情就是制作类型为submit的按钮,并给它们一个name。如果他们有name,则单击的按钮的value将与表单一起自动发送,请参阅:发送表单';s提交按钮';s值?

示例:

当单击a按钮时,将使用值a发布parameter。对于CCD_ 12和CCD_。如果单击none按钮,则不会发送任何值,并且parameter将为null(显示用于演示目的,您可能不需要此项)。

@using (Html.BeginForm("Index", "Quiz", FormMethod.Post, new { id = "form" }))
{
    ...
    <input type="submit" value="a" name="parameter" />
    <input type="submit" value="b" name="parameter" />
    <input type="submit" value="c" name="parameter" />
    <input type="submit" value="none" />
}