【问题标题】:AJAX method not posting to web methodAJAX 方法未发布到 Web 方法
【发布时间】:2021-04-23 05:31:27
【问题描述】:

我有这种方法,它使用 AJAX 将数据从表单发布到 C# 后端的 Web 方法。不幸的是,该方法没有被击中。我进行了研究,所有可访问的资源都表明这些是将表单数据传递给 Web 方法所需的 AJAX 选项。

有人可以帮我理解为什么这不起作用吗?

注意:应用程序是 asp.net webforms

<input type="file" id="uploader" />
var fileUpload = $("#uploader").get(0);
var files = fileUpload.files;
var fileData = new FormData();
for (var i = 0; i < files.length; i++) {
    fileData.append(files[i].name, files[i]);
    console.log(files[i]);
}


$.ajax({
    type: "POST",
    url: "Pagename.aspx/method",
    data: fileData,
    contentType: false,
    cache: false,
    dataType: 'json',
    processData: false,
})

【问题讨论】:

  • 服务器的响应是什么?
  • 根本没有错误响应或响应。该方法未命中,浏览器控制台不包含失败详细信息@David
  • 所以 AJAX 请求只是无限期挂起?还是一开始就没有要求?
  • 它只是根本不发布到网络方法。我在这个应用程序中有几个 ajax 请求,但唯一不工作的是这个包含 contentType: false 和 processData: false 的请求。
  • 那么它在做什么呢?在浏览器的调试工具中,网络选项卡中的请求/响应信息是什么?如果根本没有提出请求,那么听起来问题出在其他地方。

标签: c# jquery asp.net ajax webmethod


【解决方案1】:

这是我为至少让它返回响应所做的更改。我根本没有处理文件上传。看看能不能搞定。

还要注意在“数据”行上使用 JSON.stringify()。

$.ajax({
    type: "POST",
    url: "test.aspx/method",
    data: JSON.stringify(fileData),
    contentType: "application/json; charset=utf-8",
    cache: false,
    dataType: 'json',
    processData: false
}).done(function(data) {
    console.log(data);
});

网络方式:

[WebMethod]
public static string method()
{
    return "success";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多