Ajax POST请求未被处理

时间:2014-07-22 09:11:18

标签: c# jquery ajax webforms

我正在使用ajax向我网页后面的代码中的c#代码发送帖子请求,以便将tinyMCE编辑器中的内容保存到文件中。只要在编辑器中按下保存按钮,就会调用ajax函数。我使用了非常类似的方法来处理另一个网页中的帖子请求,但由于某种原因,它不适用于这个。 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”,对吧?此外,请求肯定正在启动

1 个答案:

答案 0 :(得分:0)

 $.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) {

试试这个,让我知道它是怎么回事。