2017-08-02 142 views
0

我们有一个用户需要填写的长表格,它有10个选择题。我们正面临一个问题,用户填写4-5个问题,然后停止进一步填写。如何将半填充表单数据发送到服务器?

我们希望将这个部分填充的表单信息发送到服务器。

这样做的一种方法是在每个步骤发送数据,即用户回答任何问题。但是这会导致太多的API命中,并减慢客户端的填充过程。

有没有其他方法可以实现这一点,即通过使用js unload事件,或者我们可以在客户端检测到用户正在更改 - tab/closing-browser /或使用任何其他方法退出我们的页面?

+1

怎样的形式目前已实施?多页或单页?你有表单的代码片段吗? – Peter

+0

也许你可以使用'setTimeout()'在用户开始填写表单后的一段时间发送更改。 – Barmar

+0

SO并不是真正适合头脑风暴设计的场所。你需要决定你想要做什么,然后尝试编码。如果您无法按需要使用它,请发布您尝试的内容,我们将帮助您解决问题。 – Barmar

回答

1

我一直在为表单放弃潜在的表单放弃而做这件事。因此,每当输入字段出现模糊时,它会检查频率并将表单数据作为帖子发送到处理程序,您可以在该处理程序中接收数据并在/abandoned/handler.php文件中执行所需的操作。

的Javascript(确保jQuery是首先初始化):

function sendAbandoned() { 
     var now = new Date(); 
     now = Math.floor(now/1000); 

     if ((now - lastUpdate) < 10) { 
      // make sure doesn't send too many "updates" 
      return false; 
     } 


     lastUpdate = now; 
     var formArr=$("form[name='formName']").serializeArray(); 

     $.post('/path/to/abandoned/handler.php', 
     formArr); 
    } 


    $("form[name='formName'] input").blur(function() { 
     sendAbandoned(); 
    }); 
+0

这不工作..我尝试使用此链接(https://www.w3schools.com/tags/tryit.asp?文件名= tryhtml_form_name)。因为,w3schools不允许修改代码并共享它,所以你可以找到修改后的代码(https://jsfiddle.net/twczwzkc/) – maverick

+0

嗯,这回答了这个问题,它的工作原理,所以我得到了一个投票没有解释?可能是因为我没有声明JQuery必须为脚本初始化,尽管这很明显从$?堆栈成员口头禅:“不要让善行不受惩罚”LOL –

+0

感谢您的更新..可能是我的不好,但它不工作,即使使用jQuery ..试试这个代码https://jsfiddle.net/twczwzkc/1/在https ://www.w3schools.com/tags/tryit.asp?filename = tryhtml_form_name链接 – maverick

相关问题