2012-05-25 4 views
0

PHP 페이지에서 javascript/jquery를 사용하여 메시지를 삭제하는 확인 상자를 설정하려고합니다. 변수는 javascript 함수에서 올바르게 설정되지만 이제는 페이지에 올바르게 게시 할 수있는 함수를 가져올 수 없습니다.자바 스크립트로 페이지에 PHP 변수 게시하기

는 I은 머리 코드에 대한 지금

<script src="http://code.jquery.com/jquery-latest.js"></script> 

에 포함 된 다음있다.

//displays a list of messages w/ button to delete 
if(mysql_real_escape_string($_GET['msg'] == "msgDetail")){ 
      $msg->messageDetail($msgID); 
      $action = "delete"; 
      $msgID = mysql_real_escape_string($_GET['msgID']); 

      //display a delete button that sends variables to javascript function 
      echo '<td>'.'<input type="button" value="Delete Message" name = "deleteMessage" onclick="deleteMessage(\'' . $msgID .'\', \'' .$action. '\',\'' .$userid. '\')" />'.'</td>'; 
     } 
     ?> 

     //javascript function for confirmation to delete message 
     <script type="text/javascript"> 
     function deleteMessage(msgID, action, userid){ 
      //document.write(msgID + action + userid) values are correctly showing up here when uncommented 
       if (!confirm("Are you sure?")) 
        return false; 
       $.post('messages.php',"msgID=" + msgID + "&action=" + action + "&user=" + userid, function(response) { 
        //window.location.reload() 
       }); 
     } 
     </script> 
    <? 

     //check to see if the values have been posted 
    if($_POST['action']) == "delete"){ 
     echo "success!"; 
      ....more code 
    } 

당신이 볼 수 있듯이

, 나는 변수가 messages.php을 게시하기 위해 노력하고있어하지만 난 체크 경우에도 하나가 게시 된 경우 아무 일도 발생하지 않습니다. 바로 자바 스크립트를 보면

+0

FYI :'mysql_real_escape_string'은 입력 용이고, 출력용으로 호출하지 않습니다. 어쨌든 삽입하기 전에 messages.php 내에서 다시 호출해야합니다. – Louis

+0

문제는 코드가 정상적으로 보입니다. messages.php 페이지를 확인할 수 있습니까? 문제가있을 수 있습니다. – Louis

+0

무엇을 찾고 있습니까? POST 문 값을 확인하기 위해 if 문을 만났습니다. 그 전에는 몇 페이지와 세션 변수에 대한 include 문만 있습니다. – user1406951

답변

1

, deleteMessage()는 지저분한 문자열 처리를 방지하고 디버깅하는 동안 당신에게 더 나은 피드백을 제공하기 위해 다음과 같이 작성할 수 있습니다 :

function deleteMessage(msgID, userid) { 
    if (!confirm("Are you sure?")) { return false; } 
    var data = { 
     'action': 'delete', 
     'msgID': msgID, 
     'user': userid 
    }; 
    $.ajax({ 
     url:'messages.php', 
     data: data, 
     type: 'POST', 
     success: function(response) { 
      alert(response);//debug message 
      //window.location.reload() 
     }, 
     error: function((jqXHR, textStatus, errorThrown) { 
      alert((typeof errorThrown == 'string') ? errorThrown : textStatus);//debug message 
     } 
    }); 
} 

당신은 모든 디버깅 할 때 $.post()로 다시 전환 할 수도 있습니다.

'action': 'delete'은 하드 코딩 된 것을 확인할 수 있습니다. 그것은 사소한 부분이지만, '삭제'를 deleteMessage으로 전달할 때 아무런 의미가 없습니다. 그렇게 명명 된 함수가 다른 것을 수행하지 않기 때문입니다. 해당 변경 사항은 <td><input...onclick="..."/></td> HTML이 빌드 된 곳에서 이루어져야합니다.

관련 문제