AJAX聊天问题

时间:2011-06-01 21:44:37

标签: php mysql ajax

问题是这个。我想保存MySQL数据库中的每条消息,我尝试这样做这个javascript函数:

function doWork(str)
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// Използваните браузъри
  xmlhttp=new XMLHttpRequest();
  }
else
  {// Кой ли ползва тези версии..
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
    xmlhttp.open("GET","newmsg.php?q="+str,true);
    xmlhttp.send();
}

然后是文本字段:

  <div id="sender">
     Your message: <input type="text" name="msg" size="30" id="msg" />
     <button onclick="doWork(this.msg);">Send</button>
  </div>

最后是php文件:

$q=$_GET["q"];
  (str)$q;
    $db_connect = mysql_connect('localhost', 'root', 'diamond');
    if(!$db_connect)
        {
         die('Не може да се осъществи връзка с базата данни' . mysql_error());
        }
mysql_select_db("chat", $db_connect);
$sql = "INSERT INTO messages (user_id, time, text) VALUES ('1','1234','$q')";
mysql_query($sql);
mysql_close($db_connect);

实际发生的是user_id和time字段被正确填充,但'text'字段显示为“undefined”。 它是什么意思,我该如何解决问题? 谢谢 Leron

4 个答案:

答案 0 :(得分:2)

我认为问题出在您对输入文本字段的引用中。试试这个:

<div id="sender">
   Your message: <input type="text" name="msg" size="30" id="msg" />
   <button onclick="doWork(document.getElementById('msg').value);">Send</button>
</div>

使用以下内容时,“this”指的是按钮元素,因此请勿执行以下操作。

<button onclick="doWork(this.msg);">Send</button>

答案 1 :(得分:1)

doWork(document.getElementById('msg'));

this有一个按钮元素。它在字符串转换中没有msg属性,即未定义。

答案 2 :(得分:0)

替换
<button onclick="doWork(this.msg);">Send</button>
 <button onclick="doWork(msg);">Send</button>

this.msgbutton.msg相同,没有意义。

答案 3 :(得分:-1)

Typecast (str)不存在,它是(string)。你必须通过任务来做到这一点:

$q = (string) $q;

实际上它是毫无意义的,因为URL是字符串。所以留下那条线。

此外,正如其他回复者所说,这不是获得价值的正确方法。如果按以下方式执行,则也可以使用返回键访问该按钮。使用onclick,用户被迫单击按钮。添加return false以便不提交表单。 this指向<form>

<form onsubmit="alert(this.msg.value); return false">
    <p>
        <input type="text" name="msg" />
        <button type="submit">Send</button>
    </p>
</form>