繁体   English   中英

Ajax POST请求未得到处理

[英]Ajax POST request not being processed

我正在使用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调用中调用page方法,只需将URL更改为“ Editor.aspx / handlePOSTrequest”,对吗? 另外,请求肯定正在启动

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

试试这个,让我知道如何进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM