Как мне проверить, правильно ли я отправляю запрос POST через Javascript? - PullRequest
0 голосов
/ 30 июня 2010

Вот особая ситуация: я использую букмарклет для вызова .js, который отправляет запрос POST в файл PHP на моем сервере.Вот запрос POST в файле .js:

var snd = ("qu=" + encodeURIComponent(t) + "&dl=" + encodeURIComponent(dl) + "&dt=" + encodeURIComponent(dt));


xr = new XMLHttpRequest();   
xr.open("POST", "http://quotebook.us/s/process2.php",true);
xr.onreadystatechange=function() {
  if (xr.readyState==4) {
    var xmldoc = xr.responseText;
window.alert(xr.responseText);
}
}

xr.send(snd);

И ниже, что я делаю в PHP.Но, как ни старайся, я не могу понять, как получить что-то НАЗАД в файл .js, чтобы он мог отображать его в предупреждении (и, следовательно, чтобы я мог подтвердить, что он отправляет данные в первую очередь).

<?php

if ($_SERVER['REQUEST_METHOD'] != 'POST') {
    echo "This page is not for viewing";
    exit;
} 
$qo = $_POST["qu"];
$dl = $_POST["dl"];
$dt = $_POST["dt"];

echo "First parm: $qo, second param: $dl, third param: $dt";
?>

В конечном счете, я хочу взять эти переменные и записать их в базу данных MySQL, но я по крайней мере на один день научусь это делать ...

Любая помощьэтот процесс был бы очень кстати, у меня было много времени, чтобы найти что-нибудь об обработке запросов POST, которые не отправляются пользовательской формой.По всей видимости, написание букмарклетов, отправляющих данные в MySQL, является черным искусством;)

Ответы [ 2 ]

1 голос
/ 30 июня 2010

Используйте firebug для firefox.

0 голосов
/ 30 июня 2010

К проверка , что вы делаете это правильно, я бы, вероятно, использовал Firebug на Firefox или Dev Tools на Chrome;с помощью любого из них вы можете видеть фактические отправленные или полученные данные HTTP.Но я думаю, что ваш настоящий вопрос: почему не работает POST?(Вы можете обновить заголовок своего вопроса.)

И ответом может быть то, что вы не устанавливаете тип контента.POST является общим, вы можете опубликовать что угодно .В вашем случае вы публикуете данные в кодировке URL, поэтому попробуйте добавить:

xr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

... после вашего open вызова.Некоторые примеры здесь и здесь .

...