【问题标题】:trouble with AJAX POST not updating MySQL dbAJAX POST 不更新 MySQL 数据库的问题
【发布时间】:2011-09-11 11:32:33
【问题描述】:

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

?>

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

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

【问题讨论】:

    标签: jquery mysql ajax post updates


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的帖子,我现在可以正常工作,所以 ajax 现在可以工作,但是仍然没有更新数据库。
    • 忽略最后一条评论,刚刚修复它,将我的撇号改为反引号`而不是'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 2011-12-03
    • 2016-04-13
    相关资源
    最近更新 更多