gpt4 book ai didi

javascript - 未捕获的类型错误 : Cannot set property 'action' of undefined

转载 作者:行者123 更新时间:2023-11-27 23:51:01 25 4
gpt4 key购买 nike

我无法通过 javascript 函数提交表单。我有一个要求,当用户点击一个链接时,我需要提交一个表格。以下是在浏览器控制台上看到的错误:

Uncaught TypeError: Cannot set property 'action' of undefined

请建议我如何提交表单以调用 spring Controller 方法。

下面是javascript函数:

function submitDataOnClick(){
document.myForm.action = contextPath + "/dataProcess.htm";
document.myForm.submit();
}
<body>
<form name="myForm">
//all form elements..
<table class="myClass">
<tr><td><a href="" onclick="submitDataOnClick()"> </a></td></tr>
</table>
</form>
</body>

Spring Controller :

    @RequestMapping(value = "/dataProcess", method = RequestMethod.GET)
public ModelAndView dataProcess(HttpServletRequest request,
HttpServletResponse response,
BindingResult beException)
throws IOException {

//logic...
ModelAndView mav = new ModelAndView();
mav.setViewName("home");
return mav;
}

最佳答案

在大多数浏览器中,只要您没有 var myForm 就可以了在全局范围内的任何地方或类似的地方。原因是当你给出 form元素a name属性,浏览器将在 document 上创建一个属性使用引用 form 的名称.但是,如果您在其他东西上使用相同的名称,它可能会与您认为正在使用的名称发生冲突。

解决该问题的三个选项:

  1. 您已标记您的问题 jquery但似乎没有在您的代码中使用 jQuery,因此非 jQuery 选项:

    如果您想使用链接提交表单,一种选择是给表单一个 id然后用它来查找:

    HTML:

    <form id="myForm" name="myForm">

    (如果不需要,请删除 name=...)

    JavaScript:

    function submitDataOnClick(){
    var form = document.getElementById("myForm");
    form.action = contextPath + "/dataProcess.htm";
    form.submit();
    }
  2. 因为你做了标签jquery ,一个最小变化 jQuery 选项:

    HTML:

    <tr><td><a href="" onclick="submitDataOnClick($(this).closest('form')[0])"> </a></td></tr>

    JavaScript:

    function submitDataOnClick(form){
    form.action = contextPath + "/dataProcess.htm";
    form.submit();
    }
  3. ...或更大的更改解决方案:摆脱 onclick完全在链接上,并可能向这些链接添加一个类:

    <tr><td><a href="" class="submit-on-click"> </a></td></tr>

    ...并将此代码放在 script 中表单之后的元素(通常建议在最底部,就在结束 </body> 标签之前):

    $("form[name=myForm]").on("click", "a.submit-on-click", function() {
    var form = $(this).closest('form')[0];
    form.action = contextPath + "/dataProcess.htm";
    form.submit();
    });

关于javascript - 未捕获的类型错误 : Cannot set property 'action' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27363544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com