2012-03-19 1 views
0

아약스를 사용하여 차단 된 IP 주소로 데이터베이스를 업데이트 할 수 있도록 스크립트를 작성하려고합니다. 따라서 페이지를 벗어날 필요가 없습니다. 순간에 나는 블록 버튼을 누르면 성공 메시지를 제공하지만, 데이터베이스를 보면 날짜가 업데이트되어 현재 사용 중이므로 실제로 변수를 얻지 못합니다. 그러나 다른 두 필드는 비어 있지만 문제가 어디 있는지 찾을 수 없습니다, 나는 새로운 아약스 및 그래서 모든 포인터 감사 할 것입니다, 감사합니다.AJAX 인서트가 여러 항목을 만들지 만 데이터가 없음

양식

<div id="insert_response"></div> 
<!-- Form: the action="javascript:insert()"calls the javascript function "insert" into  ajax_framework.js --> 
<form action="javascript:insert()" method="post" class="block"> 
<div align="center"> 
<input name="id" type="hidden" id="id" value="<?php echo "$id"; ?>"/> 
<input name="ip" type="hidden" id="ip" value="<?php echo "$ip"; ?>"/> 
<input type="submit" name="Submit" class="block" value="Block"/>&nbsp;</div> 
</form> 

아약스

$(document).ready(function(){ 
$('form.block').submit(function() { 
var id = $(this).find('.id').attr('value'); 
var ip = $(this).find('.ip').attr('value'); 
// ... 
}); 
    $.ajax({ 
     type: "POST", 
     url: "ajax.php", 
     data: "id="+ id +"& ip="+ ip, 
     success: function(){ 
      $('form#block').hide(function() {$('div.success').fadeIn();}); 

     } 
    }); 
return false; 
}); 

아약스 프레임 워크

function createObject() { 
var request_type; 
var browser = navigator.appName; 
if(browser == "Microsoft Internet Explorer"){ 
request_type = new ActiveXObject("Microsoft.XMLHTTP"); 
}else{ 
request_type = new XMLHttpRequest(); 
} 
return request_type; 
} 

var http = createObject(); 


var nocache = 0; 
function insert() { 
// Optional: Show a waiting message in the layer with ID login_response 
document.getElementById('insert_response').innerHTML = "Just a second..." 
// Required: verify that all fileds is not empty. Use encodeURI() to solve some issues  about character encoding. 
var ip = encodeURI(document.getElementById('ip').value); 
var id = encodeURI(document.getElementById('id').value); 
// Set te random number to add to URL request 
nocache = Math.random(); 
// Pass the login variables like URL variable 
http.open('get', 'ajax.php?id='+id+'&ip='+ip+'&nocache = '+nocache); 
http.onreadystatechange = insertReply; 
http.send(null); 
} 
function insertReply() { 
if(http.readyState == 4){ 
var response = http.responseText; 
// else if login is ok show a message: "Site added+ site URL". 
document.getElementById('insert_response').innerHTML = 'Added:'+response; 
} 
} 

그리고 마지막으로는 PHP

$id = htmlspecialchars(trim($_POST['id'])); 
$ip = htmlspecialchars(trim($_POST['ip'])); 
$addClient = "INSERT INTO ipdata (ip_address, ip_check_id, date_blocked) VALUES ('$ip','$id', NOW())"; 
mysql_query($addClient) or die(mysql_error()); 

답변

0

idip의 값으로 자바 스크립트에서 경고를 시도한 적이 있습니까?

$(this).find('.id').attr('value'); 

당신은 id라는 클래스을 찾을 말하고있다 : 당신이 말할 때 확신 해요. class="id" 말을하지 않습니다 실제 요소는 오히려 대신이 시도 대신 .

#를 사용하여 액세스 id="id"을 말한다

var id = $('#id').attr('value'); 
var ip = $('#ip').attr('value'); 
+0

감사합니다, 지금은 아무것도 보이지 않는 것 같습니다. 내가 알아 차린 것은 데이터베이스의 필수 공백 뒤에 추가 필드가 나타납니다. [object HTMLCollection] \t [obje –

+0

] 이것들은 처음에는 거기에 없었기 때문에 지연되었을 것입니다 –

0

다시 받고 성공 메시지는 간단하게 말하고 있다는 것입니다 AJAX 호출 성공적이었다. 그것이 서버에 연결되어 응답을 얻었음을 의미합니다. 그것은 서버 측 PHP 스크립트와 아무 상관이 없습니다. 서버에서 되돌아 오는 응답을 확인하고 그 응답을 확인해야합니다. 당신은 방화 녀와 함께 이것을 보거나 간단히 alert() 또는 console.log() 응답을 볼 수 있습니다.

서버로 전송되는 데이터도 확인해야합니다. 빈 ID 또는 IP 주소를 보낼 수 있습니다. 방화 광에서이 정보를 볼 수 있습니다.

+0

고마워요. 내가 보게 될 것입니다. –

+0

멋지군요, 나는 방화범을 절대로 사용하지 않았고 그걸 사용하면 깨닫지 못했습니다. ip와 id varibales를 넘겨주는 것처럼 보이는 다음을 반환했습니다. –

+0

POST ajax.php? id = 25023 & ip = 80.40.134.120 & nocache = 0.3251394215039909 –

0

나중에 참조 할 때는 데이터를 가져 오기 위해 $ ('form'). serialize()를 사용하는 것이 좋습니다.

$.ajax({ 
    type: "POST", 
    url: "ajax.php", 
    data: $('form').serialize(), 
    success: function(){ 
     $('form#block').hide(function() { $('div.success').fadeIn();}); 

    } 
}); 

이렇게하면 양식 데이터를 처리 스크립트로 가져올 때 실수를 피할 수 있습니다.

+0

덕분에 나는 그것을 줄 것이다 –

관련 문제