ich einen Test.asp mit diesem Code haben:AJAX - Klassisches ASP - Eine Formular
<HTML>
<HEAD>
<SCRIPT src="ajaxScript.js" type="text/javascript"></SCRIPT>
</HEAD>
<BODY>
<FORM action="action_page.asp" method="post">
First Name:<BR>
<INPUT type="text" name="FName"><BR>
Last Name:<BR>
<INPUT type="text" name="LName"><BR>
<INPUT type="submit" value="Submit">
<BUTTON type="button" onClick="loadXMLDoc('action_page.asp',this.form);">GoGoGo!</BUTTON>
</FORM>
<DIV id="msgBoxDiv">TEST!!</DIV>
</BODY>
</HTML>
Die Javascript-Datei, die diesen Code genannt wird, hat (ajaxScript.js):
var req; // global variable to hold request object
function processReqChange()
{
if (req.readyState == 4 && req.status == 200){document.getElementById("msgBoxDiv").innerHTML = req.responseText;}
}
function loadXMLDoc(url, params)
{
if(window.XMLHttpRequest)
{
try
{
req = new XMLHttpRequest();
} catch(e)
{
req = false;
}
}
else
{
req = false;
}
if(req)
{
var formData = new FormData(params);
req.onreadystatechange = processReqChange;
req.open("POST", url, true);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send(formData);
return true;
}
return false;
}
und meine "action_page.asp", um die Parameter zu erhalten, ist in etwa so:
<%
vRF1 = request.Form("FName")
vRF2 = request.Form("LName")
%>
<HTML>
<HEAD>
</HEAD>
<BODY>
First:<%=vRF1%><BR>
Last:<%=vRF2%>
</BODY>
</HTML>
Wenn ich die normale machen einreichen (Submit-Button), alles als e geht xpected: Es zeigt eine neue Seite mit den Werten des Formulars an.
ABER ... wenn ich versuche, den Ziel-ASP mit AJAX (gogogo-Schaltfläche) zu lesen, kann ich das Formular nicht an die Zielseite senden. Ich erhalte die Zielseite, aber ohne die angenommenen Werte. ich diese:
Result page
Wenn ich ändern "req.send (Formdata);" für "req.send (" FName = "+ 1+" & LName = QWER ");", alles funktioniert gut.
Ich habe gelesen, dass, um das gesamte Formular zu senden (wie die "üblichen" Post tun), ich muss nur "var formData = new FormData (params);" wo params das Formularobjekt wäre, und senden Sie dann die FormData (params).
Was kann ich hier falsch machen?
var formData = new FormData (params); versuch> console.log (formData); check value to post –
Findet diesen Artikel nützlich - [Einfachere Ajax mit der HTML5 FormData Interface] (http://www.sitepoint.com/easier-ajax-html5-formdata-interface/) - Hat eine "Vanille" Ansatz zu Verwenden von 'FormData', um die Daten mit 'application/x-www-form-urlencoded' korrekt zu übergeben. – Lankymart
@Lankymart Willst du das nicht als Antwort schreiben? Auf diese Weise könnte ich dir dafür danken! – Fernando