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

无效的内容类型:application x www窗体-urlencoded

仉嘉泽
2023-03-14

当我将RequestHeader设置为Content-type=“application/json”时,它将变为“application/x-www-form-urlencoded”,并且我得到了不支持的媒体类型错误(无效的内容类型:application/x-www form-urlencoded)

我的RestController代码:

 @PostMapping(value = "books/searchProcess/{pageNumber}")
@ResponseBody
public List<BookDto> bookSearchProcess(@RequestBody BookDto bookDto,
                                       @PathVariable(required = false) int pageNumber) {
    long totalPages = bookService.getTotalNumberOfPages(bookDto);
    if (totalPages == 0)
        return null;
    if (pageNumber > totalPages)
        pageNumber = (int) totalPages;
    return bookService.findMaxMatch(bookDto, pageNumber - 1, Integer.parseInt(env.getProperty("Page.Rows")));
}

我的javascript函数:

function sendToSearch(pageNumber) {
    let book = createJsonSearchObject();
    const request = new XMLHttpRequest();
    request.onreadystatechange = function () {
        if (this.readyState === 4 && this.status === 200) {
            createResultTable(this.response);
        }
    };
    request.open("POST", "/admin/books/searchProcess/" + pageNumber, true);
    request.setRequestHeader("Content-type", "application/json");
    request.dataType = "json";
    request.responseType = "json";
    book = JSON.stringify(book);
    request.send(book);
}

  function createResultTable(books) {
    let table = document.createElement('table');
    table.setAttribute("id", "result-table");
    table.setAttribute("class", "table table-hover table table-bordered table-striped");
    let i;
    table.insertRow(0).outerHTML =
        `<tr class="header">
            <th>Book Name</th>
            <th>Author Name</th>
            <th>Author Family</th>
            <th>ISBN</th>
        </tr>`;
    for (i = 0; i < Object.keys(books).length; i++) {
        const book = books[i];
        table.insertRow(i + 1).outerHTML =
            `<tr>
                <td id="name` + i + `">` + book.name + `</td>
                <td id="author.name` + i + `">` + book.author.name + `</td>
                <td id="author.family` + i + `">` + book.author.family + `</td>
                <td id="isbn` + i + `">` + book.isbn + `</td>
            </tr>`;
    }
    const deleteBtn = document.createElement('button');
    deleteBtn.setAttribute("class", "btn btn-group btn-danger btn-delete");
    deleteBtn.setAttribute("id", "btn-delete");
    deleteBtn.setAttribute("onclick", "sendToDelete()");
    deleteBtn.appendChild(document.createTextNode("Delete Selected Items"));
    document.getElementById("search-result").append(table);
    document.getElementById("delete-btn").append(deleteBtn);
}

共有1个答案

毕霖
2023-03-14

问题解决了。我使用button标签发送用户请求,将其改为button类型输入,一切都修复了

 类似资料:
  • HttpRequest设置表单内容类型无效 但是打印content-type=application/x-www-form-urlencoded;charset=UTF-8 如果使用,那么没有问题,但是查询只支持字符串。

  • 我无法在HttpClient上设置内容类型。我接着问了一个问题:如何为HttpClient请求设置Content-Type头?但还是没有运气。 所以我怎么能强迫它,这样它就真的添加了它呢?提前道谢。

  • 基础 content 渲染 <vuep template="#exampleContent"></vuep> <script v-pre type="text/x-template" id="exampleContent"> <template> <div class="amap-page-container"> <el-amap vid="amapDe

  • 我的架构是: XML文档: 我得到了一个异常,因为XML文档有错误:true cvc complex type。2.4。a: 发现以元素“create\u date”开头的内容无效。应为{create\u Date}之一。 有人能帮我吗?

  • 我一直试图仅使用文件内容检测MIME类型,使用Apache Tika Core和Apache Tika Parser1.23 jars。下面是用于相同内容的代码: Tika无法检测扩展名为。tmp(text/plain file)和iso-8859-1字符集的文件的内容类型,内容如下: èé 通过以下方式正确检测具有相同配置和以下内容的文件: 000000000000000000000000000

  • 在谷歌Chrome中,一些客户无法进入我的支付页面。当尝试提交表单时,我遇到以下错误: name=''的无效窗体控件不可聚焦。 这是来自JavaScript控制台的。 我读到这个问题可能是由于隐藏的字段具有必需的属性。现在的问题是,我们使用的是.NET webforms required字段验证器,而不是html5 required属性。 谁得到这个错误似乎是随机的。有没有人知道解决这个问题的办法