问题是这个。我想保存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
答案 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.msg
与button.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>