Я не могу преобразовать свой ajax из «GET» в «POST»

#ajax

#ajax

Вопрос:

  <script language='javascript' type='text/javascript'>

function ajaxFunction(){
  var ajaxRequest;  

  try{
    // Opera 8.0 , Firefox, Safari
    ajaxRequest = new XMLHttpRequest();
 } catch (e){
    // Internet Explorer Browsers
    try{
        ajaxRequest = new ActiveXObject('Msxml2.XMLHTTP');
    } catch (e) {
        try{
            ajaxRequest = new ActiveXObject('Microsoft.XMLHTTP');
        } catch (e){
            // Something went wrong
            alert('Your browser broke!');
            return false;
        }
    }
  }
  ajaxRequest.onreadystatechange = function(){
    if(ajaxRequest.readyState == 4){
        var ajaxDisplay = document.getElementById('pagecomments');
        ajaxDisplay.innerHTML = ajaxRequest.responseText;

    }
  }
  var message = document.getElementById('message').value;
  var wpm = document.getElementById('wpm').value;
  var queryString = '?message='   message   'amp;wpm='   wpm;
  request.open("POST", ajaxprofilechat.php, true);  
  http.send(null); 

  }

  </script>
  

Привет, я пытаюсь преобразовать этот скрипт, который у меня есть, из метода ajax GET в метод POST, поскольку я думаю, что это решит одну из проблем, с которыми я сталкиваюсь на своем веб-сайте. Однако я очень, очень новичок в кодировании ajax, и хотя я пытался преобразовать в POST, возникает ошибка, потому что этот скрипт не работает. Может ли кто-нибудь, кто хорошо разбирается в ajax, пожалуйста, помогите мне решить эту проблему, которая у меня есть? Все, что я хочу, чтобы это делалось, — это работать с использованием метода POST. Нужно ли мне вообще использовать переменные и строки запроса при использовании POST? Буду признателен за любую помощь. Спасибо за ваше время!

Вот ajaxprofilechat

 mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);
$age = $_POST['message'];
$wpm = $_POST['wpm'];
$age = mysql_real_escape_string($age); 
$wpm = mysql_real_escape_string($wpm);
$chatname6 = ($_SESSION['username']);
$message6 = $_GET['site_message'];
$month6 = date("F");
$dayofmonth6 = date("d");
$year6 = date("Y");
$date10 = "$month6 $dayofmonth6 $year6";
$hours6 = date("g");
  $min6 = date("i");
 $sec6 = date("s");
 $amorpm6 = date("A");
 $time6 = "$hours6:$min6 $amorpm6";

 if (strlen($age)>4)
 {
 mysql_query("INSERT INTO guestbook VALUES        ('','$wpm','$chatname6','$age','$date10','$time6')");
echo "amp;nbsp;<h80><b>Comment Posted</b></h80><p><p>";
}
else
 {
 echo "amp;nbsp;<h80><b>Your comment must be greater than four characters</b></h80><p>";
 }
 ?> 
  

Комментарии:

1. Вы должны начать с изучения ajax: w3schools.com/ajax/default.asp

Ответ №1:

Добавьте кавычки вокруг URL-адреса:

 request.open("POST", 'ajaxprofilechat.php', true);  
  

Без них javascript ищет переменную ajaxprofilechat со свойством php .

Ответ №2:

как сказал Гас, исправьте ajaxprofilechat.php .

 ajaxRequest.open("POST", 'ajaxprofilechat.php', true);
  

пожалуйста, обратите внимание, что вы каждый раз используете разные объекты ajax, вам нужно придерживаться объекта ajaxRequest .

затем убедитесь, что вы отправляете свои параметры таким образом :

 var params= 'message='   message   'amp;wpm='   wpm;
  ajaxRequest.open("POST", 'ajaxprofilechat.php', true);  
  ajaxRequest.send(params);
  

также добавьте эту строку перед отправкой

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

также постарайтесь упростить, чтобы убедиться, что все работает, используйте жестко закодированные значения в первый раз :

 var message = 'test';
  var wpm = 'test';
  

также используйте chrome developper tools или firebug, чтобы увидеть детали ошибок,
надеюсь, это поможет

Комментарии:

1. Большое вам спасибо, ребята, за помощь. Итак, эта часть теперь великолепна, но я думаю, что они могут быть ошибкой на моем ajaxprofilechat.php страница. Если вы не возражаете, не могли бы вы тоже посмотреть на это, пожалуйста?

2. Я только что опубликовал ajaxprofilechat. Это ошибка, хотя Flame, когда я запускаю ajaxprofilechat с помощью POST, эти две переменные $age= POST[‘message’]; и $ wpm = $ _POST [‘wpm’]; не получают значения, поэтому остальная часть кода не может быть запущена. Вот где я застрял. Буду признателен за любую помощь, спасибо!

3. Если вы хотите понять, что я имею в виду, перейдите к pearlsquirrel.com/login.php и войдите в систему с именем пользователя и паролем guest. Затем перейдите в правый верхний угол страницы и нажмите на слово с надписью page. На вашей странице прокрутите вниз, и это текстовое поле — это область, где этот код должен выполняться и сообщать вам, является ли ваше сообщение менее 4 символов, и если оно выполнено успешно, оно отправит сообщение об успешном завершении. Однако ничего из этого не происходит, и данные не вставляются в базу данных

4. Спасибо, я только что добавил его, но у меня все та же ошибка; ничего не происходит. Итак, я знаю, что теперь делать…

5. Я исправил проблему. Большое вам спасибо за всю вашу замороженную помощь! Я действительно ценю это.