首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ajax POST请求未被处理

Ajax POST请求未被处理
EN

Stack Overflow用户
提问于 2014-07-22 17:11:18
回答 1查看 162关注 0票数 1

我使用ajax向网页背后代码中的c#代码发送post请求,以便将tinyMCE编辑器中的内容保存到文件中。只要在编辑器中按下保存按钮,就会调用ajax函数。我使用了非常类似的方法来处理另一个网页中的post请求,但由于某些原因,它在这个页面上不起作用。ajax代码是:

代码语言:javascript
运行
复制
 $.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#代码是:

代码语言:javascript
运行
复制
     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#代码中添加了以下方法:

代码语言:javascript
运行
复制
[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",对吗?而且,请求肯定是被发起的

EN

回答 1

Stack Overflow用户

发布于 2014-10-22 08:58:57

代码语言:javascript
运行
复制
 $.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()表示?一根线?

如果是这样,那么您的静态函数原型应该如下所示:

代码语言:javascript
运行
复制
public static void handlePOSTrequest(string contentCheckCode) {

试试这个,让我知道它的进展如何。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24883270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档