未捕获的错误:document.myForm.submit();不是一个功能 - 第二次通话后

时间:2016-06-23 12:03:30

标签: javascript html

如果我调用一次,自动提交document.myForm.submit();可以正常工作,但是我试图多次调用它,并且在第一次尝试之后,其他时间发出错误Uncaught Error: document.myForm.submit();代码正常工作100% UNTIL我不止一次打电话。这是正常的吗?我该如何避免呢?

研究显示,我的表单输入很可能被命名为Submit,而不是

我正在使用Phonegap / Cordova:

function sendData()//Gets called once per second
{
    document.body.insertAdjacentHTML("afterend",

    '<form name=\"myForm\" action=\"http://www.mywebsite.com/formProcess.php\" method=\"POST\" target=\"submission.frame\">' +
    '<input type=\"text\"   name = "uuid" value=\"' + String(uuid)  + '\">' +
    '<input type=\"text\"   name = "directionX" value=\"' + String(directionX)  + '\">' +
    '<input type=\"text\"   name = "directionY" value=\"' + String(directionY)  + '\">' +
    '<iframe name=\"submission.frame\" hidden></iframe>'                                +
    '</form>'

    );

    document.myForm.submit();
}

服务器PHP

<?php
//Do bunch of stuff
?>
<form name="myForm" action="<?php echo $current_file; ?>" method="POST">
UUID       <input type="text" name="uuid">      <br>
directionX <input type="text" name="directionX"><br>
directionY <input type="text" name="directionY"><br>
<input type="submit" value="Send">
</form>

1 个答案:

答案 0 :(得分:1)

第一次调用它时,您需要在文档中添加一个表单,然后document.myForm就是该表单元素。

第二次调用它时,将另一个表单(同名!)添加到文档中,然后document.myForm是一个HTML元素集合(这是一个类似于数组的对象),包含两个表单。

该集合没有submit方法。里面有两个元素。

你可以通过测试看看是否存在提交方法然后抓取集合中的最后一个元素(如果它失败)来弥补这一点......

if (document.myForm.submit) {
    document.myForm.submit();
} else {
    document.myForm[document.myForm.length - 1].submit();
}

...但看起来您最好只需切换到use XMLHttpRequest,而不是将表单和iframe投放到文档中。这些是我们在90年代后期为Outlook Web应用程序提出XMLHttpRequest之前我们使用的。