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, '+');