麻烦AJAX POST没有更新MySQL数据库

时间:2011-09-11 11:32:33

标签: jquery mysql ajax post updates

我有一个表单,我通过AJAX调用(在CMS上使用),然后这个表单用于更新内容的数据库,但它不起作用,我似乎无法弄清楚在哪里。

这一切都适用于提交,因为在字段中都正确填写了数据库行,列等,并且数据预先填充了当前的内容。问题出在AJAX submit()函数和eupdate.php MySQL查询之间。

eform.php(通过另一页提取,eindex.php,显示)

<?php
require("../mcfrdb.php");
// Included database once using the require method

$item = $_POST['item'];
$page = $_POST['page'];

$row = mysql_query("SELECT * FROM mcfr WHERE pageid = '$page'");
$data = mysql_fetch_array($row);
?>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript">    </script>
<script type="text/javascript">var $j = jQuery.noConflict();</script>

<script type="text/javascript">

function submit(){
$j.ajax({ 
type:"POST",
url:"eupdate.php", 
data: "item=" + $j('#item') + "&itemcont=" + $j('#itemcont') + "&page=" + $j('#page'),
success:function(response){ 
    $j("#msg").html(response); 
    }
}); 
}

</script>
<div id="msg"></div>
<form id = "edititem" name = "edititem" onsubmit="return false;" method="post" >
<textarea cols="20" rows="5" name="itemcont" id="itemcont"><? echo $data[$item]; ?></textarea>    <br/>
<input type="text" name="item" id="item" value="<? echo $item; ?>"><br/>
<input type="text" name="page" id="page" value="<? echo $page; ?>"><br/>
<input type="button" value="make changes" onclick="submit()" >
</form>

eupdate.php

<?php
require("../mcfrdb.php");
// Included database once using the require method

$item=$_POST['item'];
$page=$_POST['page'];
$newcont=$_POST['itemcont'];

$row = mysql_query("UPDATE mcfr SET '$item' = '$newcont' WHERE pageid = '$page'");  

?>

当我点击我的按钮提交时,在此之后检查我的数据库时,没有任何更改或更新。

提前感谢所有回复,希望我们能够解决这个问题:) 干杯

1 个答案:

答案 0 :(得分:2)

由于您使用AJAX提交数据,因此您无需使用form元素(特别是它要求您执行其他操作以防止其正常提交)。

无论如何,基本问题可能是你(不)检索字段值的方式。 $j('#item')返回绑定到item输入的jQuery对象,而不是其值。要获取该值,请使用.val()方法,例如:$j('#item').val()

作为旁注,在使用任何SQL查询之前,还需要在PHP脚本中转义已发布的数据,否则您很容易受到一些可怕的SQL注入攻击。有关说明,请参阅mysql_real_escape_string的文档:http://php.net/manual/en/function.mysql-real-escape-string.php