我有一个来自数据库的列表,我希望实现编辑功能,在点击表格列时,该列变得可编辑,在点击列时,值会更新。
我为此目的使用了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 的值是对的。
然后我尝试了 $。ajax 中的 alert()函数,但没有调用它。我不确定ajax是否正在运行。这是我第一次尝试在php代码中使用ajax。
请说明问题是什么,解决方案是什么?该代码正在使用PHP 5.4在Godaddy托管的基于Linux的服务器上实现。
另外我想在失败时设置背景颜色。如何在ajax块中写出来?
答案 0 :(得分:1)
如果在警报时获得正确的值。在page2.php中。使用mysqli而不是mysql,并使用$connection
中的mysqli_query()
对象。
<?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>