php
  • jquery
  • mysql
  • ajax
  • 2012-04-27 81 views 0 likes 
    0

    在我的网站我有一个表格,用户可以填写在数据库中更新记录,表单低于...更新的形式返回

    <form class='bill-upd'> 
          <input type='hidden' value='".$info['rand']."' name='rand2' id='rand2'> 
          <input type='hidden' value='".$info['id']."' name='billid' id='billid'> 
          Total <input type='text' id='total' name='total' title='".$info['bill']."' class='defaultText' /><br /> 
          Bill name<input type='text' id='bill-name' name='bill-name' title='".$info['bill_name']."' class='defaultText' /><br /> 
          bill descriptiion <input type='text' id='bill-description' name='bill-description' title='".$info['bill_description']."' class='defaultText' /><br /> 
          category <select id='bill-category' name='bill-category'> 
           <option value='Household Bills'>Household Bills</option> 
           <option value='Social Activities'>Social Activities</option> 
          </select> 
         <input type='button' value='Save' class='bill-upd-submit' /> 
         </form> 
    

    然后我使用AJAX来发送这个数据到我的表并更新相应的记录,这工作正常

    AJAX

    $(".bill-upd-submit").click(function() { 
          var elem = $(this); 
         $.post("update_bill.php", elem.parent(".bill-upd").serialize(), function(data) { 
         // fade new data in 
         elem.closest('li').html(data); 
         }); 
    
        }); 
    

    PHP

    $uid = $_SESSION['oauth_id']; 
        $id = mysql_real_escape_string($_POST['billid']);  
        $bill = mysql_real_escape_string($_POST['total']); 
        $billname = mysql_real_escape_string($_POST['bill-name']); 
        $billdescription = mysql_real_escape_string($_POST['bill-description']); 
        $billcolour = mysql_real_escape_string($_POST['bill-category']); 
        $rand = mysql_real_escape_string($_POST['rand2']); 
    
    
    
         #update Record 
         $query = mysql_query("UPDATE `outgoings` SET id = '$id', user_id = '$uid', bill = '$bill', bill_name = '$billname', bill_description = '$billdescription', bill_colour = '$billcolour', rand = '$rand' WHERE user_id = '$uid' AND rand = '$rand' ") or die(mysql_error()); 
    
    
    
    
    
    
         Print "<span class='cost'>&pound;".$bill . "</span> "; 
         Print "<h4 class='bill-name'>".$billname . "</h4> "; 
         Print "<p class='bill-details'><span class='bill-category'>".$billdescription . "</span> "; 
         Print "<span class='bill-description'>". $billcolour . "</span></p>"; 
        echo "<a href='#' class='edit-bill'>edit</a> 
    
         <form class='bill-upd show'> 
          <input type='hidden' value='".$rand."' name='rand2' id='rand2'> 
          <input type='hidden' value='".$billname."' name='billid' id='billid''> 
          Total <input type='text' title='".$bill."' id='total' name='total' value='".$bill."'/><br /> 
          Bill name<input type='text' id='bill-name' name='bill-name' value='".$billname."'/><br /> 
          bill descriptiion <input type='text' id='bill-description' name='bill-description' value='".$billdescription."'/><br /> 
          bill colour<input type='text' id='bill-colour' name='bill-colour'value='".$billcolour."'/> 
          <input type='button' value='Save' class='bill-upd-submit' /> 
         </form> 
    
         <form class='delete-bill'> 
          <input type='hidden' value='".$rand."' name='rand2' id='rand2'> 
    
         <input type='button' value='delete' class='delete' /> 
         </form> 
    
         "; 
    

    一旦更新了我的Ajax然后返回周围的一切奠定了理所应当的数据,只是这一次,如果我填写表格出它不更新我的表,如果我刷新我的页面,我可以填写它,但它的工作原理,有没有人知道我可能做错了什么?谢谢

    +0

    给你的表单一个名称属性,然后再试一次。我在某处读到缺少表单名称可能会阻止ajax发布。 – Stefan 2012-04-27 20:43:00

    +0

    如果这不起作用,'.on()'也不起作用,那么你可能需要在你的php脚本的输出中重新添加你的ajax(在脚本标签之间)。 – Stefan 2012-04-27 20:48:52

    回答

    0

    因为您正在动态加载内容,所以您的初始绑定将无法正常工作。使用jQuery on进行绑定。

    $(function(){ 
        $(document).on("click",".bill-upd-submit").click(function(e) { 
         e.preventDefault(); 
         var elem = $(this); 
         $.post("update_bill.php", elem.parent(".bill-upd").serialize(), function(data){ 
          elem.closest('li').html(data); 
         });  
        }); 
    }); 
    

    jQuery的当前和将来的元件on工作(通过AJAX或所以加载)。

    http://api.jquery.com/on/

    的jQuery上可从1.7+。因此,如果您在此之前使用的版本,考虑live

    +0

    谢谢@Shyju,但仍然没有运气,数据似乎没有插入 – Liam 2012-04-27 19:26:09

    +0

    @ user766266:你是否收到任何脚本错误?什么是萤火虫控制台显示? – Shyju 2012-04-27 19:27:15

    +0

    它没有显示任何@shyju,用你提供的代码,但是我的更新不再起作用 – Liam 2012-04-27 19:30:26

    相关问题