gpt4 book ai didi

javascript - .ajax() 没有发布到 php 数据库查询

转载 作者:行者123 更新时间:2023-11-29 00:25:53 24 4
gpt4 key购买 nike

这对我来说一直是个问题。你们都已经帮了大忙了。然而,我又卡住了。我无法让我的 .ajax() 运行。出于某种原因,如果没有 .ajax() 调用上方的 if(field != text).click() 甚至无法工作,但我离题了。

我的问题是:为什么我的 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);

?>

最佳答案

所有 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 注入(inject)。也许不是让客户提交要更新的字段名称,而是让他们提交一个整数,您在数组中查找该整数以将其转换为字段名称。

在您的 AJAX 调用中,由于没有正确编码您的参数,您可能会遇到问题。将 dataString 分配更改为:

var dataString = { id: id, field: field, text: text };

然后 jQuery 会为你编码。

关于javascript - .ajax() 没有发布到 php 数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com