AJAX XMLHttpRequest POST
Я пытаюсь написать XMLHttpRequest, используя метод POST. Мне удалось использовать XMLHttpRequest в прошлом, используя метод GET, но я борюсь с POST.
Здесь мой код:
var xmlhttp = null;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var url = "http://www.mysite.com/script.php";
var params = "var=1";
xmlhttp.open("POST", url, true);
xmlhttp.send(params);
В основном он вызывает PHP script, который затем добавляет некоторую информацию в базу данных.
Ответы
Ответ 1
Хорошо, мне удалось отсортировать его.
Нечетная причина, возможно, связана с защитой от песочницы, но вместо того, чтобы иметь полный URL-адрес, я только что использовал относительный путь к файлу, и теперь он работает.
Спасибо всем за вашу поддержку.
Ответ 2
Вы забыли явно указать заголовок Content-type
, который необходим при выполнении запросов POST.
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
Кроме того, не забудьте использовать encodeURIComponent
для правильного кодирования ваших параметров, например:
var params = "var=" + encodeURIComponent("1");
(в этом конкретном примере это не обязательно, но при использовании специальных символов, таких как +
, все будет чересчур неправильным, если вы не кодируете текст параметра).
Обновить - вы также должны заменить все экземпляры %20
на +
, например
var params = params.replace(/%20/g, '+');