默认情况下Ajax以 Content-Type: text/plain 提交数据,此时服务器将忽略POST实体部分的数据,所以服务端程序无法获取POST数据。
解决方法:
指定Content-Type: application/x-www-form-urlencoded 。
测试程序如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
if request("action")="test" then
response.write request("name")
response.end
end if
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>test</title>
<script language="javascript">
function postform()
{
var url='1.asp?action=test';
// 创建XMLHttp对象
var xmlhttp = XMLHTTPRequestCompact();
if(!xmlhttp)
return false;
xmlhttp.open("POST", url, true);
// 尝试将下面一句注释后的效果
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4)
{
if (xmlhttp.status == 200)
{
alert(xmlhttp.responseText);
}
else
{
alert("发送失败!");
}
}
}
xmlhttp.send('name=redice红冰');
}
// 获取XMLHttp
function XMLHTTPRequestCompact()
{
var req = null;
var msxmlhttp = new Array(
'Msxml2.XMLHTTP.6.0',
'Msxml2.XMLHTTP.5.0',
'Msxml2.XMLHTTP.4.0',
'Msxml2.XMLHTTP.3.0',
'Msxml2.XMLHTTP',
'Microsoft.XMLHTTP');
for (var i = 0; i < msxmlhttp.length; i++) {
try {
req = new ActiveXObject(msxmlhttp[i]);
} catch (e) {
req = null;
}
}
if (!req && typeof XMLHttpRequest != "undefined") {
req = new XMLHttpRequest();
if (req && req.overrideMimeType)
req.overrideMimeType('text/xml');
}
if (!req) throw "Can't create XMLHttpRequest object";
return req;
}
</script>
</head>
<body>
<input value="测试" onclick="javascript:postform();" type="button" />
</body>
</html>
附测试程序:
File: Click to Download
未指定Content-Type: application/x-www-form-urlencoded将会导致服务端获取Ajax POST数据失败
[日志分享]
[日志信息]
该日志于 2010-10-28 11:44 由 redice 发表在 redice's Blog ,你除了可以发表评论外,还可以转载 “未指定Content-Type: application/x-www-form-urlencoded将会导致服务端获取Ajax POST数据失败” 日志到你的网站或博客,但是请保留源地址及作者信息,谢谢!! (尊重他人劳动,你我共同努力)
呵呵,谢谢
VaTG790i.最好的<a href=http://www.kyfei.com>网站推广软件</a>,
非常好
....................
;ui;普i;uighur;ui;ui;个
在unix网络编程中看到了关于TCP/IP的一些内容,我感觉还是写的不够。正在下载中,一定
下载地址呢