ajax没有开始改变可信任的细胞

时间:2015-04-13 21:30:47

标签: javascript php jquery ajax

我有一个可满足的表,在编辑时应该通过ajax更新数据库中的表,但是当我更改值时,数据库中没有任何内容。

<div id="activities2" class="activities2">  <?
            $q2a="SELECT activityid, activitynumber, title, description, leaders, time FROM activities where activities.meetingid='$id' AND activities.unitid='$input2'";
            $r2a=mysqli_query($dbc,$q2a) or die(mysqli_error($dbc));
            echo "<table class='layouttable'><tr><td>ActivityNumber</td><td>Title</td><td>Description</td><td>Leaders</td><td>Time</td><td>Edit</td>";
            while($row2a   
            =mysqli_fetch_assoc($r2a))  
            {
                echo "
                <tr>
                <td contenteditable='true' id='activitynumber:"  . $row2a['activityid'] .  "'>"  . $row2a['activitynumber'] .  "</td>
                <td contenteditable='true' id='title:"  . $row2a['activityid'] .  "'>" . $row2a['title'] . " </td>
                <td contenteditable='true' id='description:"  . $row2a['activityid'] .  "'>" . $row2a['description'] . " </td>
                <td contenteditable='true' id='leaders:"  . $row2a['activityid'] .  "'>" . $row2a['leaders'] . " </td>
                <td contenteditable='true' id='time:"  . $row2a['activityid'] .  "'>" . $row2a['time'] . " </td>
                </tr>.
                ";
            }
        echo"</table>"; ?><br><Br></div>

ajax的javascript是:

<script name = 'inlineedit'>
$(document).ready(function(){
   $("td[contenteditable=true]").blur(function(){
       var msg = $(".alert");
       var newvalue = $(this).text();
       var field = $(this).attr("id");
       $.post("activityupdate.php",field+"="+newvalue,function(d){
           var data = JSON.parse(d);
           msg.removeClass("hide");
            if(data.status == '200'){
                msg.addClass("alert-success").removeClass("alert-danger");
            }else{
                msg.addClass("alert-danger").removeClass("alert-success");
            }
           msg.text(data.response);
           setTimeout(function(){msg.addClass("hide");},3000);//It will add hide class after 3 seconds
       });
   });
});
</script>

和进行编辑的php文件(虽然它似乎没有达到这个目的:

<?
$response = NULL;
$status = http_response_code(406);
if(!empty($_POST)){
    include "connect_db.php"; //Including Database Settings
    foreach($_POST as $key=>$value){
        $key = strip_tags(trim($key));
        $value = strip_tags(trim($value));
        $explode = explode(":",$key);
        $activity_id = $explode[1];
        $field_name = $explode[0];
        if(isset($activity_id)){
            $query = "UPDATE activities SET $field_name='{$value}' WHERE activityid='$activity_id'";
            $update = mysqli_query($dbc,$query) or die(mysqli_error($dbc)); //Update the activity Table
            if($update){
                $response = "User Details Updated";
                http_response_code(200); //Setting HTTP Code to 200 i.e OK
            }else{
                $response = "Not Modified";
                http_response_code(304); //Setting HTTP Code to 304 i.e Not Modified
            }
        }else{
            $response = "Not Acceptable";
        }
    }
}
echo json_encode(array(
    "status"=>$status,
    "response"=>$response
));
?>

1 个答案:

答案 0 :(得分:0)

您需要对代码进行少量更改:

  1. 而不是设置contenteditable =&#39; true&#39;使用class =&#39; editable&#39;。
  2. 在js中尝试使用更改而不是模糊。

    $("td.editable").on ("change",function(){....

    这将对可编辑字段中的每个更改执行ajax。