2016-06-23 9 views
-3

Die Autosubmit document.myForm.submit(); funktioniert gut, wenn ich es einmal anrufe, aber ich versuche, es mehrmals zu nennen und nach dem ersten Versuch geben die anderen Zeiten einen Fehler Uncaught Error: document.myForm.submit(); der Code funktioniert 100% gut Bis ich mehr als einmal anrufe. Ist das normal? Wie vermeide ich es?Uncaught Error: document.myForm.submit(); ist keine Funktion - Nach dem 2. Anruf

Forschung zeigt, dass höchstwahrscheinlich meine Form Eingänge Senden benannt, was nicht der Fall ist

Ich verwende 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(); 
} 

Server 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> 
+0

Wie nennt man 'document.myForm.submit()' das zweite Mal? –

+0

Wo ist dein Code? –

+0

einen überprüfbaren Codeschnipsel posten, der das Problem hervorhebt. – Damon

Antwort

1

Die Wenn Sie es zum ersten Mal aufrufen, fügen Sie dem Dokument ein Formular hinzu, und dann ist dieses Formularelement document.myForm.

Das zweite Mal, wenn Sie es nennen, fügen Sie andere Form (mit dem gleichnamigen!) Auf das Dokument und dann document.myForm ist ein HTML-Element Collection (das ist ein Array-ähnliches Objekt), die zwei Formen.

Die Sammlung hat keine submit Methode. Die zwei Elemente in ihm tun.

Sie für die durch Tests kompensieren konnten, um zu sehen, ob es ein Verfahren vorlegen und dann in der Sammlung das letzte Element greifen, wenn es fehlschlägt ...

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

... aber es sieht wirklich wie Sie wäre besser aus Wechseln Sie einfach zu use XMLHttpRequest statt Formulare und iFrames in das Dokument zu werfen. Dies ist das, was wir verwendet haben, bevor Microsoft in den späten 90ern mit XMLHttpRequest für die Outlook-Webanwendung aufkam.

+0

Funktioniert perfekt, danke. Ich dachte nicht, dass ich Code hochladen müsste, also eine vage Frage. Ich habe gerade angefangen zu lernen PHP/MySQL, ich realisiere die Formulare sind eine schlampige Art und Weise aber gibt ein visuelles Lernen :) Eine Frage aber bitte: ist XMLHttpRequest viel schneller als das Absenden eines Formulars? Wenn ich versuche, Formular 20 pro Sekunde zu senden, stürzt es ab, aber 1 pro Sekunde ist in Ordnung. Könnte ich das so schnell machen? - Grundsätzlich ist der Code alles, was X- und Y-Koordinaten eines Spiels liefert. –

+1

Es ist nicht viel schneller. Es ist jedoch robuster. Möglicherweise möchten Sie WebSockets untersuchen. – Quentin

+0

Vielen Dank –

Verwandte Themen