这一直是我的问题。你们都已经帮了很多忙。但是,我再次陷入困境。我无法让.ajax()
运行。出于某种原因,.click()
甚至在if(field != text)
电话之上没有.ajax()
的情况下工作,但我离题了。
我的问题是:为什么我的ajax()
无法正常运行,如果这个问题得到解决,那么在没有页面刷新的情况下将查询发送到数据库后,表格是否显示更新?
这是我的剧本:
<script type="text/javascript">
$(document).ready(function()
{
$(".edit_td").click(function()
{
$(this).children(".text").hide();
$(this).children(".editbox").show();
}).children('.editbox').change(function()
{
var id=$(this).closest('tr').attr('id');
var field=$(this).data('field');
var text=$(this).val();
var dataString = 'id= '+ id +'&field= '+ field +'&text= '+ text;
alert("made variables");
if(field != text)
{
alert("in if");
$.ajax({
type: "POST",
url: "table_edit_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$("#first_"+ID).html(first);
$("#last_"+ID).html(last);
}
});
}
else
{
alert('Enter something.');
}
});
// Edit input box click action
$(".editbox").mouseup(function()
{
return false
});
// Outside click action
$(document).mouseup(function()
{
$(".editbox").hide();
$(".text").show();
});
});
</script>
这是我的table_edit_ajax.php
<?php
//connect to DB
$con = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
echo 'in table_edit';
$id = mysqli_escape_String($_POST['id']);
$table = "owners";
$field = mysqli_escape_String($_POST['field']);
$text = mysqli_escape_String($_POST['text']);
$query = "UPDATE ".$table." SET ".$field."='".$text."' WHERE ".$table."_id = '".$id."'";
mysqli_query($query);
//close connection
mysqli_close($con);
?>
答案 0 :(得分:1)
所有mysqli函数的第一个参数是连接,语句或结果对象。
$id = mysqli_escape_String($con, $_POST['id']);
$table = "owners";
$field = $_POST['field'];
$text = mysqli_escape_String($con, $_POST['text']);
$query = "UPDATE ".$table." SET ".$field."='".$text."' WHERE ".$table."_id = '".$id."'";
mysqli_query($con, $query);
$field
不应该被转义,因为它不是字符串值。因此,您需要仔细验证它,以防止SQL注入。也许不是允许客户端提交要更新的字段名称,而是让它们提交一个整数,在数组中查找该整数以转换为字段名称。
在您的AJAX调用中,由于未正确编码参数,可能会出现问题。将dataString
作业更改为:
var dataString = { id: id, field: field, text: text };
然后jQuery会为你编码。
答案 1 :(得分:0)
您正在发送数据字符串
var dataString = 'id= '+ id +'&field= '+ field +'&text= '+ text;
并通过$ _POST检索它。
首先检查$ _POST中的内容 并使用$ _GET而不是$ _POST
并将ajax中的发布更改为获取
什么是成功回调的第一个也是最后一个?