我使用ajax向网页背后代码中的c#代码发送post请求,以便将tinyMCE编辑器中的内容保存到文件中。只要在编辑器中按下保存按钮,就会调用ajax函数。我使用了非常类似的方法来处理另一个网页中的post请求,但由于某些原因,它在这个页面上不起作用。ajax代码是:
$.ajax({
url: "Editor.aspx",
data: { "contentCheckCode": tinyMCE.activeEditor.getContent() },
type: "POST",
success: function (response) {
alert("Contents saved...");
},
error: function (xhr, status, errorThrown) {
alert("Error: " + errorThrown);
}
});处理该请求的C#代码是:
protected void Page_Load(object sender, EventArgs e)
{
//listens for POST request
if (Request.HttpMethod == "POST")
{
BasePage sourcepage = (BasePage)Context.Handler;
bool success;
String requestContents;
String path = Server.MapPath(sourcepage.Src);
using (Stream inputStream = Request.InputStream)
{
using (StreamReader readStream = new StreamReader(inputStream))
{
requestContents = readStream.ReadToEnd();
}
}
if (requestContents.Contains("contentCheckCode"))
{
requestContents = editText(requestContents);
success = saveToFile(requestContents, path);
if (success)
{
Response.Output.WriteLine("Contents saved");
}
else
{
Response.Output.WriteLine("Error encountered");
}
}
}
}当我通过调试时,即使ajax方法每次都调用成功函数,代码似乎从来没有接收过请求,有什么建议可以解释为什么会这样吗?再一次,我在另一个网页上用几乎完全相同的方式做到了这一点,没有任何问题
编辑:我在后面的C#代码中添加了以下方法:
[System.Web.Services.WebMethod]
public static void handlePOSTrequest(HttpContext request) {
if (HttpContext.Current.Request.HttpMethod == "POST") {
bool success;
String requestContents;
using (Stream inputStream = (HttpContext.Current.Request.InputStream))
{
using (StreamReader readStream = new StreamReader(inputStream))
{
requestContents = readStream.ReadToEnd();
}
}
if (requestContents.Contains("contentCheckCode"))
{
requestContents = editText(requestContents);
success = saveToFile(requestContents, filePath);
}
}
}并在它旁边放置了一个断点,但代码在这一点上从未停止,这意味着它没有捕获请求,我是不是错过了什么/做错了什么?另外,为了检查一下,为了直接从ajax调用中调用页面方法,只需将url更改为"Editor.aspx/handlePOSTrequest",对吗?而且,请求肯定是被发起的
发布于 2014-10-22 08:58:57
$.ajax({
url: "Editor.aspx/handlePOSTrequest",
data: { "contentCheckCode": tinyMCE.activeEditor.getContent() },
type: "POST",
success: function (response) {
alert("Contents saved...");
},
error: function (xhr, status, errorThrown) {
alert("Error: " + errorThrown);
}
});当你传入"contentCheckCode“时,你的静态方法接受一个HttpContext对象吗?我不认为HttpContext类是可序列化的。还有什么能做到:
tinyMCE.activeEditor.getContent()表示?一根线?
如果是这样,那么您的静态函数原型应该如下所示:
public static void handlePOSTrequest(string contentCheckCode) {试试这个,让我知道它的进展如何。
https://stackoverflow.com/questions/24883270
复制相似问题