为啥我的简单 ajax 帖子没有调用 c# web 方法?

Posted

技术标签:

【中文标题】为啥我的简单 ajax 帖子没有调用 c# web 方法?【英文标题】:Why is my simple ajax post not calling the c# web method?为什么我的简单 ajax 帖子没有调用 c# web 方法? 【发布时间】:2019-06-10 21:43:39 【问题描述】:

我有一个非常简单的 AJAX Post,它不调用 C# Web 方法。

当我在 JS 中添加断点时,它似乎到达了 AJAX 帖子,但只是退出而不进入 Web 方法。任何见解将不胜感激!

jQuery/AJAX:

$('#btnProcess').click(function () 
    for (var i = 0; i < $('#fileList li').length; i++) 
        fileName = $('#fileList li')[i].innerText.substring(2, $('#fileList li')[i].length)

        $.ajax(
            type: 'POST',
            url: 'Default.aspx/ReadFile',
            data: ' fileName: ' + fileName + ' ',
        )
    
)

C#/Web 方法:

[WebMethod]
    public static void ReadFile(string fileName)
    
        string file = @"C:\Users\!user.a\" + fileName;
        Process.Start(file);

    

【问题讨论】:

@RyanWilson 我从来没有像你提到的那样格式化 AJAX 帖子。尽管我确实尝试了您的解决方案,但没有成功。 @RyanWilson 不走运。谢谢 你的 readFile 方法没有被调用? @BrunoCaceiro 正确... 【参考方案1】:

我通过反复试验找到了答案。在本例中,我必须使用 JSON.stringify 将数据传递给 Web 方法。下面是更新后的JS代码:

$('#btnProcess').click(function () 
    for (var i = 0; i < $('#fileList li').length; i++) 
        fileName = $('#fileList li')[i].innerText.substring(2, $('#fileList li')[i].length)
        $.ajax(
            type: 'post',
            url: 'Default.aspx/ReadFile',
            contentType: 'application/json; charset=utf-8',
            data: JSON.stringify('fileName': fileName)
        )
    
)

【讨论】:

以上是关于为啥我的简单 ajax 帖子没有调用 c# web 方法?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我总是在这个 ajax 帖子到 php 时得到未定义的响应?

为啥我对控制器方法的简单 ajax 调用不起作用?

使用ajax c#自动刷新带有更新数据的Gridview?

为啥从 ajax 调用 web 服务会引发内部服务器 500 错误?

为啥我的 AngularJS ajax 自动触发,即使我没有调用它?

为啥这个对 C# 方法的 jquery ajax GET 调用不起作用?