【问题标题】:POST Form Data Without SubmitPOST 表单数据而不提交
【发布时间】:2013-09-25 23:54:37
【问题描述】:

我有一个包含许多数据字段的表单。表单上有一个按钮,可将您重定向到另一个页面以填写其他信息。填写完其他信息后,您将导航回原始表格。我希望能够发布部分填写的表单,而无需实际提交,因此我可以将其存储在会话中。

是否可以在不通过表单上指定的操作 url 的情况下发布表单数据?

【问题讨论】:

  • 我不明白“发布”和“提交”之间的区别。你到底有什么,你想做什么?

标签: c# javascript html asp.net-mvc


【解决方案1】:

您可以将点击事件添加到您的链接或按钮(将用户带到表单/小部件的第二部分),并且您可以使用 ajax 将表单发布到您的操作方法,然后您可以保存它。

你的js代码应该是这样的

$(function(){

  $("#idOfNextLinkOrButton").click(function(e){

    e.preventDefault();
    var _form=$(this).closest("form");  //Get the form somehave

    $.post("@Url.Action("TempSave","Home")",_form.serialize(),function(result){
       //do something with the result
    });

  });

});

【讨论】:

  • +1 但考虑 Ajax 在浏览器中不可用时的行为(JavaScript 已关闭)。拥有优雅的用户体验,即使只是显示需要 JavaScript 的页面。
  • @Shyju 哇,这实际上是不言自明的。应该想通了。感谢您的帮助!
  • @Will 你不客气!很高兴我能帮忙:)
【解决方案2】:

您可以将其发布到相同的 URL,但例如包含一个隐藏字段 SurveyCompleted=false,当您在最后一页时将其设置为 true。仅当true 时,输入才会被持久化,否则您只需将其保存在会话中即可。

【讨论】:

    【解决方案3】:

    您可以在单击某些按钮/提交表单时使用 Javascript Ajax 发布到其他 URL。

    注意:确保当您单击表单内的按钮时,默认行为是提交,但您可以阻止。

    我们喜欢在 jQuery 中

    $('#btnSend').click(function(e){
        e.preventDefault();
        $.post('someurl',data,function(result){});
    });
    

    数据参数可以是

    data=$('#yourform').serialize(); // sends the whole form data
    
     or
    data=JSON.stingify(someJavaScriptObject); // you can set and send anydata
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      相关资源
      最近更新 更多