2013-10-31 3 views
-2

동적 인 페이지에 주석 시스템을 설정하려고합니다. 사용자 입력이 자동으로 다시로드되지 않고 페이지에로드됩니다. 에 제출
JavaScript를 다시로드하지 않고 PHP 코드를 처리하십시오.

<form action="" method="post"> 
<textarea name=comment"></textarea> 
<input type="submit" class="submit" name="submit" value="SUBMIT"> 
</form> 

은, PHP는 데이터베이스로 사용자 입력을 제출, 다음 사업부의 페이지에 반향된다. 일부 아약스, 자바 스크립트 및 jquery 함수를 사용하여 시도했지만 페이지 여전히 제출시 다시로드됩니다. 제출을 처리하기위한 응축 된 PHP 코드는 코멘트

$sql = "SELECT * FROM comments"; 
while ($record = mysql_fetch_array($myData)){ 
echo "<div>".$record['comment'].'</div>'; 
} 

나는 코드의 일종 필요를 표시

$comment = $_POST['comment']; 
$id = $_GET['id']; 
sql = "INSERT INTO comments (id, comment) VALUES ('$id', '$comment')"; 
mysql_query($sql, $connect); 
Header("Location: ".$_SERVER['PHP_SELF'].'"); 

그 다음입니다 새로 고침없이 자동으로 업데이트 코멘트. 나는 "Header ('Location'... '부분이 사용자가 수동으로 다시로드 할 경우 양식을 다시 제출하지 못하게 할 수 있는지, 다른 스크립트를 방해 할 수 있는지 여부는 모르겠다.

면책 조항 :. 내가 처음이 작업을 할 필요가 곧 MySQLi에 물건을 전환 할 수 있습니다 너희들이 더 이상 정보가 필요하면, 내가 적절하게 질문을 업데이 트됩니다 감사

+1

MySQLi로 전환하기 전에 코드에 mysql_real_escape_string()을 삽입하십시오! 심각한 보안 취약점이 있습니다! – ComFreek

+0

좋은 시작입니다 : http://api.jquery.com/jQuery.ajax/ –

+0

mysql_real_escape_string에 대해 알고 있습니다. 내 코드가 주입에 영향을받지 않도록했습니다.하지만 앞에서 설명한 것처럼 모든 것이 가독성을 위해 요약됩니다. – Zach

답변

2

서버 측 :...

$output = array(); 
.... 
while ($record = mysql_fetch_array($myData)) { 
    $output[] = $record; 
} 
echo json_encode($output); 

클라이언트 측 :

참고 :이 경우 jQuery이 필요합니다.

<a href="#" id="update-comments">Update</a> 
<div class="comments"></div> 
<script language="javascript"> 
$('#update-comments').click(function (event) { 
    event.preventDefault(); 
    $.ajax({ 
     url: 'URL TO YOUR BACKEND', 
     type: "GET", 
     cache: false, 
     success: function (json) { 
     $('.comments').html(''); 
     var comments = JSON.parse(json); 
     $.each(comments, function (i, item) { 
      $('.comments').append('<div class="comment">' + item.comment + '</div>'); 
     }); 
    } 
    }); 
}); 
</script> 

은 기본적으로 당신은 JSON 형식의 데이터베이스에서 다차원 배열 결과를 반환 서버에 GET 자원에 대한 jQuery를 $.ajax 전화를 시작하는 버튼이 있습니다. AJAX 호출이 작동되면 $.each을 입력하고 .comments이라는 컨테이너에 각 설명에 <div>을 추가합니다.

관련 문제