如何使用JavaScript设置Content-Type标头

时间:2010-01-13 17:24:14

标签: javascript utf-8 header set content-type

如何使用JavaScript将Content-Type标头设置为“application / x-www-form-urlencoded; charset = UTF-8”?

我需要这样做才能查看带有法语字符的表单而不会产生错误。

由于

4 个答案:

答案 0 :(得分:9)

标头由服务器设置,将内容类型作为HTTP消息的一部分提供。当它在浏览器中运行javascript时为时已晚。您是否可以访问服务器端代码?为什么不在那里将内容类型设置为utf-8?您也可以将其作为头部元标记的一部分。

答案 1 :(得分:3)

内容类型由服务器在将HTML发送到浏览器之前设置。您无法使用JavaScript修改它。

答案 2 :(得分:3)

您可以将meta标记添加到页面的head,或发送服务器端标题。

例如,

<meta http-equiv="Content-type" content="application/x-www-form-urlencoded; charset=UTF-8"/>

在服务器端

,比如PHP:

<?php
  header( 'Content-type: application/x-www-form-urlencoded; charset=UTF-8' );
?>

就是这样!

答案 3 :(得分:1)

我假设您要与服务器进行通信,例如提交表单,然后服务器将结果发回给您,其中您需要正确的 Content-type 以允许服务器进行通信。

如果是这样,那么 XMLHttpRequest.setRequestHeader() 可能会有所帮助。


一个例子

(
  () => {
    const form = document.forms.namedItem("my-query-form")
    form.addEventListener('submit', function (submitEvent) {

      const outputElement = document.getElementById("msg")

      const xhr = new XMLHttpRequest();
      xhr.open("POST", "query", true);
      xhr.setRequestHeader("Content-Type", "application/json"); // <----
      xhr.onload = function (oEvent) {
        if (xhr.status === 200) {
          outputElement.innerHTML = `<p style="color:green;">${xhr.responseText}</p>`;
          setTimeout(function () {
            window.location.href = "/home";
          }, 1000);

        } else {
          outputElement.innerHTML = `<p style="color:red;">Error ${xhr.status}: ${xhr.responseText}</p>`
        }
      };

      const htmlFormControlsCollection = submitEvent.target.elements
      const jsonData = JSON.stringify(
        {
          "username": htmlFormControlsCollection["username"].value,
        });
      xhr.send(jsonData);
      submitEvent.preventDefault();
    }, false);
  }
)()