如何在 Razor PageModel 中从 Javascript 检索 FormData (HtmlFormEleme



我正在尝试使用 ajax 将 base64 字符串发送到我的 Razor PageModel。base64 字符串是裁剪派结果的结果。任何帮助将不胜感激。我尝试了以下方法:

1( 创建一个表单数据表单并将其发送到我的页面模型:

        var f = new FormData();
        f.append('s',base64)
        $.ajax({
            url: "?handler=SaveIcon",
            data: f
        });

结果:

        jquery.js:8463 Uncaught (in promise) TypeError: Illegal invocation
        at add (jquery.js:8463)
        at buildParams (jquery.js:8450)
        at Function.jQuery.param (jquery.js:8483)
        at Function.ajax (jquery.js:9073)
        at ChangeProfilePhoto:205

2( 直接通过 ajax 传递 base64 字符串:

        $.ajax({
            url: "?handler=SaveIcon",
            data: { 's': base64 }
        });

结果:URI 太长

3( 通过邮政发送 base64 字符串:

        var token = $('input[name="__RequestVerificationToken"]').val();
        var headers = {};
        headers['__RequestVerificationToken'] = token;
        var f = new FormData();
        f.append('s', base64);
        $.ajax({
            headers: headers,
            url: "?handler=SaveIcon",
            method: "POST",
            data: f,
            contentType: false,
            processData: false
        });

结果:400 个错误请求。

您需要

设置processDatacontentType参数才能false

var f = new FormData();
f.append('s',base64)
$.ajax({
    url: "?handler=SaveIcon",
    method: "post",
    data: f,
    contentType: false,
    processData: false
});

为了通过标头传递防伪令牌,请使用默认标头名称(如果未配置其他(RequestVerificationToken(不带前导下划线(

var headers = {
    RequestVerificationToken: token
};

或者您也可以将其作为FormData传递

var f = new FormData();
f.append('s',base64);
f.append("__RequestVerificationToken", token);

相关内容

  • 没有找到相关文章

最新更新