2016-12-14 51 views
0

我有一個來自數據庫的列表,我想實現編輯功能,在onclicking一個表列時,該列變爲可編輯狀態,點擊列外時,值得到更新。部分用AJAX更新列表

我已經爲此使用了AJAX。我的代碼下:

page1.php中

<script src="http://code.jquery.com/jquery-1.10.2.js"></script> 
<script> 
function showEdit(editableObj) 
{ 
$(editableObj).css("background","#FFF"); 
} 
function saveToDB(editableObj,column,id) 
{ 
$.ajax(
{ 
    url: "page2.php", 
    type: "POST", 
    data:'column='+column+'&editval='+editableObj.innerHTML+'&id='+id, 
    success: function(data) 
    { 
    $(editableObj).css("background","#FDFDFD"); 
    }   
}); 
} 
</script> 

我的表的列是爲下:

<td contenteditable="true" onBlur="saveToDB(this, 'exmid','<?php echo $p0; ?>')" 
     onClick="showEdit(this);"><?php echo $p3 ?> 

注:$ P0包含序列號行從MySQL數據庫表和$ p3包含顯示的文本。

使page2.php的代碼是:

<?php 
include_once 'includes/db_connect.php'; 
?> 
<?php 
$result = mysql_query("UPDATE examlist1 set " . $_POST["column"] . " =  '".$_POST["editval"]."' WHERE sno=".$_POST["id"]); 
?> 

問題: 當我點擊欄就變成可編輯的。在saveToDB()中使用alert()我已檢查該功能是否在單擊列外時調用,並且值id是正確的。

然後我嘗試了alert()函數裏面的$ .ajax,它沒有被調用。我不確定ajax是否正在運行。這是我第一次嘗試在php代碼中使用ajax。

請提出什麼問題和解決方案?該代碼正在使用PHP 5.4在Godaddy託管的基於Linux的服務器上實施。

另外我想設置背景顏色失敗。如何在ajax塊內寫入它?

+0

您的瀏覽器添加插件的螢火擴展。並看看使用螢火蟲檢查發生了什麼。 –

回答

1

如果您在alerting時得到正確的值。在您的page2.php中。使用mysqli而不是mysql,並使用mysqli_query()中的$connection對象。

<?php 
include_once 'includes/db_connect.php'; 
$column=$_POST["column"]; 
$editval=$_POST["editval"]; 
$id=$_POST["id"]; 
$result = mysqli_query($connection,"UPDATE examlist1 SET $column='$editval' WHERE sno=$id");//$connection is database connection variable 
if ($result) 
{ 
    echo json_encode(array('success'=>true)); 
} 
else 
{ 
    echo json_encode(array('success'=>false)); 
} 
?> 

這裏的Javascript:嘗試100分%的作品(定義要在if/else聲明什麼)

<script src="http://code.jquery.com/jquery-1.10.2.js"></script> 
<script> 
function showEdit(editableObj) 
{ 
$(editableObj).css("background","#FFF"); 
} 
function saveToDB(editableObj,column,id) 
{ 
$.ajax(
{ 
    url: "page2.php", 
    type: "POST", 
    data:'column='+column+'&editval='+editableObj.innerHTML+'&id='+id, 
    success: function(data) 
    { 
    var res=eval(data); 
    //if success then 
    if (res.success) 
    { 
     //write JS code that you want after successful updation 

    $(editableObj).css("background","#FDFDFD"); //<- according to problem 
    } 
    //if fails then 
    else 
    { 
     //write JS code that you want after unsuccess 
    } 
    }   
}); 
} 
</script> 
+0

關於ajax調用函數,我該如何檢查成功失敗? – ITSagar

+0

我發現它... thankx。這是正確的方式嗎?錯誤:函數(data){ \t \t \t \t \t $(editableObj).css(「background」,「red」); $(editableObj).css(「color」,「white」); \t \t \t \t} – ITSagar

+0

@ITSagar我編輯了'Javascript'.Try它....works享受和投票了謝謝你。 –