Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.01.2021, 18:12
Интересующийся
Отправить личное сообщение для begovik Посмотреть профиль Найти все сообщения от begovik
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 17.01.2021, 18:17
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,726

Тут не многие умеют по трем строчкам кода диагноз ставить, но я попробую.

Цитата:
Метод setRequestHeader() следует вызывать только после open(), но до send().
© https://developer.mozilla.org/ru/doc...tRequestHeader
Ответить с цитированием
  #3 (permalink)  
Старый 17.01.2021, 18:24
Интересующийся
Отправить личное сообщение для begovik Посмотреть профиль Найти все сообщения от begovik
 
Регистрация: 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);
    }
}
Ответить с цитированием
  #4 (permalink)  
Старый 17.01.2021, 18:44
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

let rtype = 'get',
SendRequest(rtype,url,data,handler);
.......
if (r_method.toLowerCase() == "post") {
Request.setRequestHeader('Content-Type','application/json');
Ответить с цитированием
  #5 (permalink)  
Старый 17.01.2021, 23:28
Интересующийся
Отправить личное сообщение для begovik Посмотреть профиль Найти все сообщения от begovik
 
Регистрация: 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);
    }
}
Ответить с цитированием
  #6 (permalink)  
Старый 18.01.2021, 11:15
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

Сообщение от begovik
но в браузере Content-Type всё-равно равен text/html.
А что передает сервер?
Вы смотрите Request Headers или, может быть, Response Headers?
Ответить с цитированием
  #7 (permalink)  
Старый 18.01.2021, 16:47
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,726

(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);
    }
}
Изображения:
Тип файла: jpg 2021-01-18_165120.jpg (14.5 Кб, 5 просмотров)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При обновлении графиков нужно обновить ось Х, а именно изменить формат. c3.js Anry Элементы интерфейса 0 26.01.2020 18:55
переделать функцию adspro AJAX и COMET 5 09.03.2015 04:32
extjs 4 mvc, разбираемся с model & store Lord Daedra ExtJS 1 18.08.2011 22:36
Не получается поменять высоту div revvo jQuery 4 06.08.2011 13:12
Не могу изменить содержимое innerHTML в ie djon-killer Events/DOM/Window 24 02.09.2009 13:17