2009-09-30 3 views
0

좋아요. 그래서 jquery가있는 nOOb입니다. 동적으로 생성 된 항목 목록을 업데이트/삭제 기능이 있습니다 (그리고 모두 잘 작동합니다). 내 문제는 "추가"기능입니다. 데이터베이스에 항목을 추가 할 수는 있지만 추가 한 후에는 새로 만든 항목 "컨테이너"를 볼 수 없습니다. 데이터가 제출 된 후 다시 정상적으로 돌아옵니다 ... 그냥 div가 나타나서 볼 수 없습니다 ... grr.클릭 기능 새로 추가 된 항목 표시

미리 도움을 청한 사용자에게 감사드립니다.

<html> 
<head> 
    <title>jQuery/Ajax - Display respective values on submit for inputs with same class name</title> 
<link rel="stylesheet" type="text/css" href="test.css" /> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 

<head> 
<body> 
<div id="wrap"> 
    <?php while($row = $db->fetch_assoc($query)) { ?> 
    <form action="update.php" class="myFormClass" method="post"> 
     <div class="container" id="<?php echo $row['monthID'] ?>"> 
      <div class="showText"><?php echo $row['months']; ?></div> 
      <input name="check" type="text" class="check" value="<?php echo $row['months']; ?>" /> 
      <input name="hidden" type="hidden" class="hidden" value="<?php echo $row['monthID']; ?>" /> 
      <ul class="list"> 
      <li class="liOne"> 
       <input name="edit" type="button" class="edit" value="edit" /> 
      </li> 
      <li class="liTwo"> 
       <button name="delete" type="button" class="delete" value="<?php echo $row['monthID']; ?>">delete</button> 
      </li> 
      <li class="liThree"> 
       <button name="save" type="submit" class="save" value="<?php echo $row['monthID']; ?>">save</button> 
      </li> 
      <li class="liFour"> 
       <input name="cancel" type="button" class="cancel" value="cancel" /> 
      </li> 
      </ul> 
     </div> 
    </form> 
    <?php } ?> 
    </div> 
    <!-- This the add entry portion --> 
    <form action="add.php" class="addForm" method="post"> 
     <label for="entry">Entry:</label> 
     <input type="text" name="entry" class="entry" value="<?php $valid->entities('add', 'entry'); ?>" /> 
     <?php //$valid->display_errors('entry'); ?> 
     <button class="add" type="button" name="add">Add New Entry</button> 
    </form> 
    <form action="delete.php" class="delForm" method="post"> 
    </form> 
</body> 
</html> 

은 add.php : 여기

// the add entry function 
    $("button.add").click(function(){ 
     var buttonAdd = this; 
     var inputText = $("input.entry").attr("value"); 
     var contID = $(".container").attr("id"); 
     var action = $("form.addForm").attr("action"); 
     var container = $(".container"); 
     $.post(action, { cache: false, add : inputText, id : contID }, 
     function(data){ 
      if(data.success) { 
      //need the new div "container" to be shown... 
     } else if(data.error) { 
      $(".message").html(data.message).show(); 
     } 
     }, "json"); 
     return false; 
    }); 

내 HTML입니다 : 여기

은 JQuery와 클릭 기능의 난 당신의 PHP를 얻을 것

<?php 


    $data['add'] = trim($db->escape_value($_POST['add'])); 
    $data['id'] = trim($db->escape_value($_POST['id'])); 

if(!isset($data['add']) || empty($data['add'])) { 
    $data['error'] = true; 
    $data['message'] = "Please enter a value."; 
} else { 


    $query = "INSERT INTO month (months) VALUES ('{$data['add']}')"; 

    $result = $db->query($query); 

    if($result) { 
    $data['success'] = true; 
    $data['message'] = "Entry Successfully added."; 
    } 
} 

echo json_encode($data); 


?> 

답변

0

반환하는 모든 json 응답으로 새롭게 삽입 된 값. 이미 반 ($data['add']로) 그렇게 것 같습니다,하지만 난 약간 다른 방법으로 그것을 할 거라고 :

$data['id'] = mysql_insert_id(); 

$response['success'] = true; 
$response['message'] = "Woohoo"; 
$response['data'] = $data; 

echo json_encode($response); 

이 방법, 당신은 당신의 자바 스크립트이 얻을 :

{ 
    success : true, 
    message : 'Woohoo', 
    data : { 
     id : 15, 
     add : 'foo' 
    } 
} 

거기에서 목록에 쉽게 추가 할 수 있습니다.

function(data) { 
    if (data.success) { 
     $("ul.list").append(
      $("<li></li>") 
       .html("id: " + data.data.id + ", add: " + data.data.add) 
       .addClass("blah") // liOne, liTwo, huh??? 
     ); 
    } 
} 
+0

나는 그것을 시험해 볼 것이다! 감사. 오, 그렇습니다. "리"학급 이름 ... 묻지 말고 .. 진행중인 일. – Scott

관련 문제