簡體   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