我无法将我的ajax从“GET”转换为“POST”

时间:2011-10-06 22:06:23

标签: 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 + '&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 "&nbsp;<h80><b>Comment Posted</b></h80><p><p>";
}
else
 {
 echo "&nbsp;<h80><b>Your comment must be greater than four characters</b></h80><p>";
 }
 ?> 

2 个答案:

答案 0 :(得分:2)

在网址周围添加引号:

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

没有它们,javascript正在寻找属性为ajaxprofilechat的变量php

答案 1 :(得分:1)

正如Gus所说,纠正了ajaxprofilechat.php。

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

请注意,每次使用不同的ajax对象时,必须坚持使用对象ajaxRequest。

然后确保以这种方式发送你的参数:

var params= 'message=' + message + '&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工具或firebug来查看错误详情, 希望这有帮助