У меня есть test.asp с этим кодом:AJAX - Классический ASP - Дать Форма
<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>
Файл Javascript, который называется (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;
}
И мой «action_page.asp», чтобы получить параметры, как так:
<%
vRF1 = request.Form("FName")
vRF2 = request.Form("LName")
%>
<HTML>
<HEAD>
</HEAD>
<BODY>
First:<%=vRF1%><BR>
Last:<%=vRF2%>
</BODY>
</HTML>
Если я нормальный представить (кнопка отправки), все идет как е xpected: он показывает новую страницу со значениями формы.
НО ... если я попытаюсь прочитать целевой ASP с помощью AJAX (кнопка gogogo), я не могу отправить форму на целевую страницу. Я получаю целевую страницу, но без предполагаемых значений. я получаю это:
Result page
Если я изменю "req.send (FormData);" для "req.send (" FName = "+ 1+" & LName = QWER ");", все работает хорошо.
Я читал, что для отправки всей формы (например, «обычный» пост), мне просто нужно сделать «var formData = new FormData (params)»; где params будет объектом формы, а затем отправить FormData (params).
Что я могу делать неправильно здесь?
var formData = new FormData (params); попробуйте> console.log (formData); проверить значение для сообщения –
Возможно найти эту статью полезной - [Легче Ajax с HTML5 FormData Interface] (http://www.sitepoint.com/easier-ajax-html5-formdata-interface/) - Имеет «ванильный» подход к используя 'FormData', чтобы правильно передавать данные с помощью' application/x-www-form-urlencoded'. – Lankymart
@ Lankymart Разве вы не хотите писать это как ответ? Таким образом, я мог бы поблагодарить вас за это! – Fernando