繁体   English   中英

无需提交表单即可获取输入字段的值

[英]Get value of input field without submitting form

我想获取输入字段的当前值,然后根据字段值回显数据库中的一些信息,而不使用提交。

当您为网站填写新的个人资料时,而不是通过单击提交的麻烦,如果您的用户名已经被取消,则返回该字段旁边的错误消息。

这是我到目前为止所得到的:

<html>
<body>
<form name='Form'>
Date: <input type='text' id='sheetid' />
<input type='button' onclick='ajaxFunction()' value='Query!' /> <br />
</form>
<div id='content'>Result</div>
</body>

<script language="javascript" type="text/javascript">
function ajaxFunction(){
var ajaxRequest;
try{
ajaxRequest = new XMLHttpRequest();
} catch (e){
    try{
    ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try{
        ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e){
        alert("ERROR!");
        return false;
        }
    }
}
    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
            var ajaxDisplay = document.getElementById('content');
            ajaxDisplay.innerHTML = ajaxRequest.responseText;
        }
    }
    var sheetid = document.getElementById('sheetid').value;
    var queryString = "?url=" + sheetid;
    ajaxRequest.open("GET", "test.php" + queryString, true);
    ajaxRequest.send(null); 
}
</script>

</html>

和我的PHP:

<?
$st=$_POST['sheetid'];
require_once('database_connect.php');
$inf = "SELECT * FROM `comments` WHERE date='$st' ORDER BY time ASC";
 $info = mysql_query($inf);
     if(!$info) die(mysql_error());
   $info_rows = mysql_num_rows($info);
     if($info_rows > 0) {
   echo '<table width="95%">';
while($info2 = mysql_fetch_object($info)) {
echo '<tr>';
echo '<td>';echo '<a href="mailto:'.$info2->username.'@mail.com">'.stripslashes($info2->username).'</a>'; echo "("; echo date('H:i', $info2->time)."): "; echo stripslashes($info2->comment).'</td>'.'</tr>';
}
}
?>

我不确定为什么这不显示任何注释,也无法弄清楚如何在不按下查询按钮的情况下使其工作,但是在用户完成输入或单击输入框之后。

对于任何反馈,我们都表示感谢。

Thnaks

你在哪里初始化XmlHttpRequest对象? 像这样的东西:

var ajaxRequest ;
if (window.XMLHttpRequest) 
{ 
ajaxRequest = new XMLHttpRequest();
}
else if (window.ActiveXObject) 
{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
}

为了完成我的回答,我将添加两件事:

  • 1st:在onreadystatechange函数中,不要忘记测试HTTP响应代码,如下所示:
    if (xhr.readyState == 4 && xhr.status == 200)

  • 第二:你可以使用像jQueryPrototype这样的JS框架来简化你的AJAX调用。

回应2

尝试添加:

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

响应

您使用GET方法发布数据ajaxRequest.open("GET", "test.php" + queryString, true); ,但是在你的PHP中,你使用POST var来检索它$_POST['sheetid']只需使用它:

$_GET['sheetid'];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM