为何用ajax向同一个页面发送post和get请求,post请求服务器端的代码不执行,而换成get请求时就一切正常?
以下是向服务器发送post请求时调用的函数:functionButton1_onclick(){createXMLHttpRequest();varname=docume...
以下是向服务器发送post请求时调用的函数:
function Button1_onclick()
{
createXMLHttpRequest();
var name = document.getElementById("Text1").value; var password = document.getElementById("Text2").value;
var data = "<persons><person>";
data += "<name>" + name + "</name>";
data += "<password>" + password + "</password>";
data += "</person></persons>";
xmlHttp.open("post", "three.aspx", true);
xmlHttp.onreadystatechange = process;
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.send(data);
}
发送get请求时就是改open方法里的第一个参数为get,还有把设置请求头部的代码注释,外加send方法改成发送null。我在请求的页面onload函数打了断点,get方法会使onload执行,但post方法就不会执行服务器端代码,什么反应也没有。
请哪位大侠指教。谢谢。一下是所请求的页面的服务器端后台代码:
public partial class three : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsCallback)
{
Stream sm = Request.InputStream;
string xml = sm.ToString();
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(sm);
Response.Write(xmldoc.OuterXml);
Response.End();
}
}
} 展开
function Button1_onclick()
{
createXMLHttpRequest();
var name = document.getElementById("Text1").value; var password = document.getElementById("Text2").value;
var data = "<persons><person>";
data += "<name>" + name + "</name>";
data += "<password>" + password + "</password>";
data += "</person></persons>";
xmlHttp.open("post", "three.aspx", true);
xmlHttp.onreadystatechange = process;
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.send(data);
}
发送get请求时就是改open方法里的第一个参数为get,还有把设置请求头部的代码注释,外加send方法改成发送null。我在请求的页面onload函数打了断点,get方法会使onload执行,但post方法就不会执行服务器端代码,什么反应也没有。
请哪位大侠指教。谢谢。一下是所请求的页面的服务器端后台代码:
public partial class three : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsCallback)
{
Stream sm = Request.InputStream;
string xml = sm.ToString();
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(sm);
Response.Write(xmldoc.OuterXml);
Response.End();
}
}
} 展开
3个回答
展开全部
请查看一下你服务器端是使用那种方式来接受数据的.
估计你服务器端用的GET方法来接受数据.
估计你服务器端用的GET方法来接受数据.
更多追问追答
追问
关键不是在服务器端获取不到参数,而是用post方法发送请求时,根本就不运行服务器端的代码,断点打在protected void Page_Load(object sender, EventArgs e) 这个方法的第一行都不进,但是用get方法就正常,到了这里就进了断点了。这是怎么回事呢?
追答
先别用ajax方式提交, 你先试着用表单的方式提交,看看报的什么错! 要不我们也没办法分析哪错了!
还有就是,你的load方法里面,为什么初始化流呢?
貌似在web编程中很少用到这个对象吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的页面是是不是有 if(page.ispostback)这样的东东啊
追问
我的服务器页面onload事件里只有个if(Page.IsCallback)判断。但奇怪的是不管是页面第一次加载还是用ajax请求页面,代码执行到这里都是返回false。这是另一个奇怪的问题了。能告诉这是怎么回事么?这个IsCallback属性当是回调而不是回发的时候应该返回true啊,但怎么是false?什么原因?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询