Also habe ich dieses HTML-Formular:
<html>
<head><title>test</title></head>
<body>
<form action="myurl" method="POST" name="myForm">
<p><label for="first_name">First Name:</label>
<input type="text" name="first_name" id="fname"></p>
<p><label for="last_name">Last Name:</label>
<input type="text" name="last_name" id="lname"></p>
<input value="Submit" type="submit" onclick="submitform()">
</form>
</body>
</html>
Was wäre der einfachste Weg, um die Daten dieses Formulars als JSON-Objekt an meinen Server zu senden, wenn ein Benutzer auf Senden klickt?
UPDATE: Ich bin so weit gegangen, aber es scheint nicht zu funktionieren:
<script type="text/javascript">
function submitform(){
alert("Sending Json");
var xhr = new XMLHttpRequest();
xhr.open(form.method, form.action, true);
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
var j = {
"first_name":"binchen",
"last_name":"heris",
};
xhr.send(JSON.stringify(j));
Was mache ich falsch?
$.ajax
undserialize
in dem jQuery - API.Antworten:
Holen Sie sich vollständige Formulardaten als Array und stringieren Sie sie.
Sie können es später in Ajax verwenden. Oder wenn Sie Ajax nicht verwenden; Legen Sie es in einen versteckten Textbereich und übergeben Sie es an den Server. Wenn diese Daten über normale Formulardaten als JSON-Zeichenfolge übergeben werden, müssen Sie sie mit json_decode dekodieren . Sie erhalten dann alle Daten in einem Array.
quelle
$.ajax
es wirklich einfach, diese Daten weiterzugeben.HTML bietet keine Möglichkeit, JSON aus Formulardaten zu generieren.
Wenn Sie wirklich vom Client aus damit umgehen möchten, müssen Sie JavaScript verwenden, um:
Sie sollten sich wahrscheinlich besser an
application/x-www-form-urlencoded
Daten halten und diese auf dem Server verarbeiten als auf JSON. Ihr Formular hat keine komplizierte Hierarchie, die von einer JSON-Datenstruktur profitieren würde.Update als Antwort auf eine wichtige Neufassung der Frage…
readystatechange
Handler, daher tun Sie nichts mit der Antwortquelle
enctype='application/json'
zur Formulardefinition, um JSON-Daten zu erstellen. W3.org/TR/html-json-formsSie Code ist in Ordnung , aber nie ausgeführt, Ursache ersetzen Taste [type = „submit“] vor nur durch type = button
in Ihrem Skript; Form ist nicht deklariert.
quelle
Ich bin spät dran, aber ich muss sagen, für diejenigen, die ein Objekt benötigen und nur HTML verwenden, gibt es einen Weg. In einigen serverseitigen Frameworks wie PHP können Sie den folgenden Code schreiben:
Wir müssen also den Namen der Eingabe
object[property]
festlegen, um ein Objekt zu erhalten. Im obigen Beispiel haben wir Daten mit dem folgenden JSON erhalten:quelle