
17.01.2021, 18:12
|
Интересующийся
|
|
Регистрация: 09.02.2019
Сообщений: 22
|
|
Не могу изменить Content-type
Здравствуйте!
Подскажите пожалуйста почему у меня не получается изменить Content-type при XMLHttpRequest-запросе и как это решить.
Вот мой код:
if (r_method.toLowerCase() == "post") {
//Если это POST-запрос
//Устанавливаем заголовок
Request.setRequestHeader('Content-Type','application/json; charset=utf-8');
//Посылаем запрос
Request.send(JSON.stringify(data));
}
но в браузере Content-Type всё-равно равен text/html.
|
|

17.01.2021, 18:17
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,809
|
|
Тут не многие умеют по трем строчкам кода диагноз ставить, но я попробую.
Цитата:
|
Метод setRequestHeader() следует вызывать только после open(), но до send().
|
© https://developer.mozilla.org/ru/doc...tRequestHeader
|
|

17.01.2021, 18:24
|
Интересующийся
|
|
Регистрация: 09.02.2019
Сообщений: 22
|
|
Да господи, неужели же вы думаете, что я не перешерстив весь интернет, сразу сюда прибежал???
Но если вам нужен весь код, то вот, пожалуйста:
document.getElementById('one').onclick = function(){
let rtype = 'get',
url = 'ajax.php',
data = 'getMonths=1';
// Создаем функцию обработчик (что мы делаем с полученными данными)
var handler = function(Request) {
document.getElementById('container').innerHTML = JSON.parse(Request.responseText);
// console.log(Request.responseText);
}
// Отправляем запрос
SendRequest(rtype,url,data,handler);
}
$('#two').on('click', function(){
$.ajax({
url: "ajax.php",
contentType: 'application/json',
type: "post",
data: "showmore",
dataType: "html"
}).done(function (data) {
console.log(data);
});
})
function CreateRequest() {
var Request = false;
if (window.XMLHttpRequest) {
//Gecko-совместимые браузеры, Safari, Konqueror
Request = new XMLHttpRequest();
} else if (window.ActiveXObject) {
//Internet explorer
try {
Request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (CatchException) {
Request = new ActiveXObject("Msxml2.XMLHTTP");
}
}
if (!Request) {
alert("Невозможно создать XMLHttpRequest");
}
return Request;
}
/*
Функция посылки запроса к файлу на сервере
r_method - тип запроса: GET или POST
r_path - путь к файлу
r_args - аргументы вида a=1&b=2&c=3...
r_handler - функция-обработчик ответа от сервера
*/
function SendRequest(r_method, r_path, r_args, r_handler) {
//Создаём запрос
var Request = CreateRequest();
//Проверяем существование запроса еще раз
if (!Request) return;
//Назначаем пользовательский обработчик
Request.onreadystatechange = function() {
//Если обмен данными завершен
if (Request.readyState == 4) {
//Передаем управление обработчику пользователя
r_handler(Request);
}
}
//Проверяем, если требуется сделать GET-запрос
if (r_method.toLowerCase() == "get" && r_args.length > 0)
r_path += "?" + r_args;
//Инициализируем соединение
Request.open(r_method, r_path, true);
if (r_method.toLowerCase() == "post") {
//Если это POST-запрос
//Устанавливаем заголовок
// Request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
Request.setRequestHeader('Content-Type','application/json');
//Посылаем запрос
Request.send(JSON.stringify(r_args));
} else {
//Если это GET-запрос
//Посылаем нуль-запрос
Request.send(null);
}
}
|
|

17.01.2021, 18:44
|
 |
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,763
|
|
let rtype = 'get',
SendRequest(rtype,url,data,handler);
.......
if (r_method.toLowerCase() == "post") {
Request.setRequestHeader('Content-Type','application/json');
|
|

17.01.2021, 23:28
|
Интересующийся
|
|
Регистрация: 09.02.2019
Сообщений: 22
|
|
Не тот блок скопировал, извините.
document.getElementById('two').onclick = function(){
let rtype = 'POST',
url = 'ajax.php',
// data = 'getMonths';
data,
innerData = new Object();
innerData['getMonths'] = 'all';
innerData['getM'] = 'alleer';
innerData['Months'] = 'ball';
innerData['ges'] = 'aull';
data = innerData;
console.log(data);
// console.log(JSON.stringify(data));
// JSON.stringify(data);
// Создаем функцию обработчик (что мы делаем с полученными данными)
var handler = function(Request) {
document.getElementById('container').innerHTML = Request.responseText;
// console.log(Request.responseText);
}
// Отправляем запрос
SendRequest(rtype,url,data,handler);
}
function CreateRequest() {
var Request = false;
if (window.XMLHttpRequest) {
//Gecko-совместимые браузеры, Safari, Konqueror
Request = new XMLHttpRequest();
} else if (window.ActiveXObject) {
//Internet explorer
try {
Request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (CatchException) {
Request = new ActiveXObject("Msxml2.XMLHTTP");
}
}
if (!Request) {
alert("Невозможно создать XMLHttpRequest");
}
return Request;
}
/*
Функция посылки запроса к файлу на сервере
r_method - тип запроса: GET или POST
r_path - путь к файлу
r_args - аргументы вида a=1&b=2&c=3...
r_handler - функция-обработчик ответа от сервера
*/
function SendRequest(r_method, r_path, r_args, r_handler) {
//Создаём запрос
var Request = CreateRequest();
//Проверяем существование запроса еще раз
if (!Request) return;
//Назначаем пользовательский обработчик
Request.onreadystatechange = function() {
//Если обмен данными завершен
if (Request.readyState == 4) {
//Передаем управление обработчику пользователя
r_handler(Request);
}
}
//Проверяем, если требуется сделать GET-запрос
if (r_method.toLowerCase() == "get" && r_args.length > 0)
r_path += "?" + r_args;
//Инициализируем соединение
Request.open(r_method, r_path, true);
if (r_method.toLowerCase() == "post") {
//Если это POST-запрос
//Устанавливаем заголовок
// Request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
Request.setRequestHeader('Content-Type','application/json');
//Посылаем запрос
Request.send(JSON.stringify(r_args));
} else {
//Если это GET-запрос
//Посылаем нуль-запрос
Request.send(null);
}
}
|
|

18.01.2021, 11:15
|
 |
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,763
|
|
Сообщение от begovik
|
но в браузере Content-Type всё-равно равен text/html.
|
А что передает сервер?
Вы смотрите Request Headers или, может быть, Response Headers?
|
|

18.01.2021, 16:47
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,809
|
|
(function(){
let rtype = 'POST',
url = 'ajax.php?test-request',
// data = 'getMonths';
data,
innerData = new Object();
innerData['getMonths'] = 'all';
innerData['getM'] = 'alleer';
innerData['Months'] = 'ball';
innerData['ges'] = 'aull';
data = {};
// console.log(JSON.stringify(data));
// JSON.stringify(data);
// Создаем функцию обработчик (что мы делаем с полученными данными)
var handler = function(Request) {
}
// Отправляем запрос
SendRequest(rtype,url,data,handler);
})();
function CreateRequest() {
var Request = false;
if (window.XMLHttpRequest) {
//Gecko-совместимые браузеры, Safari, Konqueror
Request = new XMLHttpRequest();
} else if (window.ActiveXObject) {
//Internet explorer
try {
Request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (CatchException) {
Request = new ActiveXObject("Msxml2.XMLHTTP");
}
}
if (!Request) {
alert("Невозможно создать XMLHttpRequest");
}
return Request;
}
/*
Функция посылки запроса к файлу на сервере
r_method - тип запроса: GET или POST
r_path - путь к файлу
r_args - аргументы вида a=1&b=2&c=3...
r_handler - функция-обработчик ответа от сервера
*/
function SendRequest(r_method, r_path, r_args, r_handler) {
//Создаём запрос
var Request = CreateRequest();
//Проверяем существование запроса еще раз
if (!Request) return;
//Назначаем пользовательский обработчик
Request.onreadystatechange = function() {
//Если обмен данными завершен
if (Request.readyState == 4) {
//Передаем управление обработчику пользователя
r_handler(Request);
}
}
//Проверяем, если требуется сделать GET-запрос
if (r_method.toLowerCase() == "get" && r_args.length > 0)
r_path += "?" + r_args;
//Инициализируем соединение
Request.open(r_method, r_path, true);
if (r_method.toLowerCase() == "post") {
//Если это POST-запрос
//Устанавливаем заголовок
// Request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
Request.setRequestHeader('Content-Type','application/json');
//Посылаем запрос
Request.send(JSON.stringify(r_args));
} else {
//Если это GET-запрос
//Посылаем нуль-запрос
Request.send(null);
}
}
|
|
|
|