【问题标题】:How to add additional data in my JQUERY submit?如何在我的 JQUERY 提交中添加其他数据?
【发布时间】:2013-02-06 04:26:08
【问题描述】:

在我看来,我使用的是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 始终为空(这很正常)。如何使用 JQUERY 为 parameter 添加其他数据?

注意:我没有使用 AJAX。

【问题讨论】:

  • 还有什么数据?从哪里?什么是#element - 表单或其他元素?
  • 你如何通过模型?
  • @BhushanFirake 使用与我的剃须刀视图相同的整个模型
  • @tvanfosson #element 是表单,抱歉。我的意思是传递这样的数据: { parameter: "d", q: $("#form").serialize() }

标签: c# jquery asp.net-mvc jquery-ui asp.net-mvc-4


【解决方案1】:

在您的表单 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');

【讨论】:

  • 我错过了什么吗?它仍然在 parameter 值中传递一个 NULL 值: $("#form").append('button=a').submit();
  • 提交表单时能否在浏览器的url中看到任何查询字符串
  • 有了你最后的答案,我可以获得更多信息,因为你的解决方案:stackoverflow.com/questions/3761051/…
  • 哇!我用隐藏的元素胡闹的次数,这就是我所要做的。谢谢!
【解决方案2】:

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

<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?

【讨论】:

  • 好吧,假设我的 razor 视图中有两个按钮,其中一个应该发送“d”为parameter,另一个发送“a”为parameter
【解决方案3】:

根据您的 cmets,对您来说最简单的事情是让您的按钮类型为 submit 并给它们一个 name。如果他们有name,则被点击的按钮的value 将与表单帖子一起自动发送,请参阅:sending form's submit button's value?

例子:

当点击a 按钮时,parameter 将被发布为值abc 也是如此。如果单击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" />
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-20
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 2013-08-13
    • 1970-01-01
    • 2021-08-02
    相关资源
    最近更新 更多