2013-09-23 2 views
0

입력 필드의 현재 값을 가져온 다음 제출을 사용하지 않고 필드 값을 기반으로 데이터베이스에서 일부 정보를 반향시키고 싶습니다.양식을 제출하지 않고 입력 필드 값 가져 오기

사이트의 새 프로필을 작성하는 중이고 제출을 클릭하고 사용자 이름이 이미 사용 된 경우 돌아가는 대신 번거로운 과정을 거치지 않고 해당 필드 옆에 오류 메시지를 표시하는 것과 같습니다.

<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 객체를 초기화하기 않는

답변

2

? 이런 식으로 뭔가 :

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

내 대답을 완료하려면, 나는이 일을 추가 할 것입니다 :

  • 1 : onreadystatechange 기능으로,이 같은 HTTP 응답 코드를 테스트하는 것을 잊지 마세요 :
    if (xhr.readyState == 4 && xhr.status == 200)

  • 2 : 당신이 AJAX 호출을 단순화하기 위해 jQuery 또는 Prototype 같은 JS 프레임 워크를 사용할 수 있습니다.

응답이

봅니다이 추가 :

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

응답

당신은 데이터 ajaxRequest.open("GET", "test.php" + queryString, true);를 게시 GET 메소드를 사용하지만 PHP에서 사용 POST var 01 검색 피드백에 대한

$_GET['sheetid']; 
+0

감사합니다,하지만 난 내 코드를 misscopied해야합니다 보인다 그냥이 대신 사용합니다. 지금 가지고있는 것으로 업데이트되었습니다. 나는 아무것도 돌려받지 못했다. – user2743057

관련 문제