当前位置: 首页 > 知识库问答 >
问题:

无法调用服务器端webmethod函数

亢琦
2023-03-14

我正在使用summernote,我想上传图片到我的网络服务器…下面是我正在使用的代码

Default.aspx

<script type="text/javascript">
    $(document).ready(function () {
        $('#summernote').summernote({
            onImageUpload: function (files, editor, $editable) {
                alert('image?');
                var formData = new FormData();
                formData.append("file", files[0]);

                $.ajax({
                    url: "Default.aspx/UploadImage",
                    data: formData,
                    type: 'POST',
                    cache: false,
                    contentType: false,
                    processData: false,
                    success: function (imageUrl) {
                        alert(imageUrl);
                        if (!imageUrl) {

                            // handle error

                            return;
                        }

                        editor.insertImage($editable, imageUrl);
                    },
                    error: function () {
                        alert('error');
                        // handle error
                    }
                });
                console.log('image upload:', files, editor, $editable);
            }
        });
    });
</script>

default.asp.cs

[System.Web.Services.WebMethod]
    public static string UploadImage(HttpPostedFileBase file)
    {
        //Saving to Server

        return imageUrl;
    }

 url: "About.aspx/UploadImage",
                   data: "multipart/form-data",
                   type: 'POST',
                   cache: false,
                   contentType: "application/json",

错误:

注意:我已经将页面从default.aspx更改为about.aspx(但代码相同)

共有1个答案

年业
2023-03-14

WebMethod或“页面方法”需要ContentType:“application/json;

其他参考:Scott Guthrie-JSON劫持以及ASP.NET AJAX 1.0如何避免这些攻击:

ASP.NET对基于GET和POST的ASP.NET AJAX web方法都实施了一个内置的验证保护层,即无论使用HTTP谓词,ASP.NET总是要求将HTTP Content-Type头设置为值application/json。如果没有发送此内容类型标头,ASP.NET AJAX将拒绝服务器上的请求。

    null
  • 链接中的建议未使用WebMethod。
  • 为了发送文件/s,您的contenttype必须是multipart/form-data
    • 参见相关问题:jquery contentType false

    Hth...

 类似资料:
  • 问题内容: 我正在尝试使用AJAX 调用功能,但无法获得适当的结果。我已经搜索了我的问题并找到了许多解决方案,但是这些解决方案对我没有用。请指导我我在做什么错。帮助将不胜感激。 干杯 程式码片段 后台代码文件中的方法 例外 问题答案: 首先,如果web方法在页面类中,而不在Web服务类中,则它应该是静态的。 其次,传输的数据实际上不是字符串,而是对象,因此将其更改为: 第三件事,“类型”用于旧版本

  • 当我从模拟器上的应用程序调用服务时,我得到以下错误。

  • 问题内容: 我需要在jquery中调用java类方法,该怎么做? 欲了解更多信息,例如: 我想从jQuery 调用此方法。 问题答案: 1种方法:- 在jquery api中,要调用任何后端系统,就您的Java而言,您需要执行ajax调用来调用Java控制器或服务。 jQuery ajax发布调用(在此处调用Java控制器) 第二种方法: 如果您需要Java类来参与jsp的构建,则可以使用自定义标

  • 我想使用Ajax调用一个服务器端函数。 我在这篇文章中找到了一个PHP的简单示例。我认为,如果我们能够包括这个同样的例子,社区将会有所改进,但对于Python/Flask MVC框架来说是如此。 这是视图端的ajax代码,称为test.html: 这将是控制器上的Python代码:

  • 我可以在我自己的电脑上使用这个程序,但是我不能在服务器上使用。 服务器使用最高权限管理员打开程序。 具有的服务器WCF HTTP激活功能。NET4。5号门开着。 服务器endpoint地址使用"http://localhost",如下所示 endpoint地址="http://localhost"绑定="basicHttpBind"bindingConfiguration="NewBinding0

  • 问题内容: 我是jqGrid的新手,但发现很难按照jqGrid文档进行操作 我无法弄清楚设置JQGrid时如何调用WebMethod。我已经成功进行了Ajax调用以获取数据,然后使用本地数据设置JQGrid。我认为这是设置过程中的一个额外步骤,我应该能够使用url属性提供webmethod的路径。 editurl属性是相同的方式。我从未真正收到过发布到服务器的帖子。 原始码 尝试了JQGrid设置