如何使用JavaScript将Content-Type标头设置为“application / x-www-form-urlencoded; charset = UTF-8”?
我需要这样做才能查看带有法语字符的表单而不会产生错误。
由于
答案 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);
}
)()