【发布时间】:2016-07-29 03:36:22
【问题描述】:
我有一个带有此代码的 TEST.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>
如果我进行正常提交(提交按钮),一切都会按预期进行:它会显示一个包含表单值的新页面。
但是...如果我尝试使用 AJAX(gogogo 按钮)读取目标 ASP,我无法将表单发送到目标页面。我确实收到了目标页面,但没有假定的值。
我明白了:
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);检查要发布的值
-
可能会发现这篇文章很有用 - Easier Ajax With the HTML5 FormData Interface - 使用
FormData使用application/x-www-form-urlencoded正确传递数据的“香草”方法。 -
@Lankymart 你不想写这个作为答案吗?这样我就可以给你功劳了!
-
如果我今天有时间会做。
标签: javascript ajax forms post asp-classic