0

我有一个通过 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'");  

?>

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

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

4

1 回答 1

2

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

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

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

于 2011-09-11T11:47:06.487 回答