Как я могу получить данные FormData (HtmlFormElement) из Javascript в Razor PageModel? - PullRequest
1 голос
/ 25 марта 2019

Я пытаюсь отправить строку base64 в мою Razor PageModel, используя ajax.Строка base64 является результатом результата Кроппи.Любая помощь будет очень признателен.Я пробовал следующие способы:

1) Создание формы FormData и отправка ее в мою PageModel:

        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) Передача строки base64 непосредственно через ajax:

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

Результат: URI Too Long

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 Неверный запрос.

1 Ответ

0 голосов
/ 25 марта 2019

Для параметров processData и contentType необходимо установить 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);
...