if(xmlhttp.readyState == 4&& xmlhttp.status == 200)这个条件不起作用

时间:2017-11-03 20:15:11

标签: javascript php ajax

其实我正在聊聊天......但它不符合这个条件。    这是代码

function submitChat() {
  if (form1.users.value == "" || form1.messege.value == "") {
    alert("Please fill the all feild");
    return;
  }
  var users = form1.users.value;
  var messege = form1.messege.value;
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function() {
    //Here is the problem may be
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
      document.getElementByID('shouts').innerHTML = xmlhttp.responseText;
    }
  }
  xmlhttp.open('GET', 'process.php?users' + users + '&messege' + messege, 'true');
  xmlhttp.send();

这里这些变量显示未定义..

$users = $_REQUEST['users'];
$messege =  $_REQUEST['messege'];

1 个答案:

答案 0 :(得分:1)

您在参数名称及其值之间省略了=

此外,当您发送可能包含特殊字符的网址参数时,您需要使用encodeURIComponent()

对其进行正确编码
xmlhttp.open('GET', 'process.php?users=' + encodeURIComponent(users) + '&messege=' + encodeURIComponent(messege), true);

另请注意,第三个参数应该是布尔值,而不是字符串(尽管由于任何非空字符串都是真实的,'true'将与true具有相同的效果,但'false' }不等于false)。

对于像邮件这样的长输入使用URL参数通常也不是一个好主意,您应该使用POST数据。

xmlhttp.open('POST', 'process.php', true);
xmlhttp.send('users=' + encodeURIComponent(users) + '&messege=' + encodeURIComponent(messege));