jQuery AJAX POST到PHP文件到UPDATE数据库没有更新

时间:2012-08-17 03:14:00

标签: php jquery mysql ajax post

我正在尝试构建一个小型CMS系统,我想使用AJAX和jQuery来实现这一目标。

如果我不使用AJAX代码可以工作,我不知道为什么数据没有正确传递。 AJAX的成功回归“成功”

感谢任何帮助。

这是我的Javascript:

$(document).ready(function(){
    var aboutContent = $('#aboutContent').attr('value');
    $('#aboutUpdate').submit(function() {
        $.ajax({
            type: "POST",
            url: "scripts/update.php",
            data: "aboutUpdate="+aboutContent,
            beforeSend: function(){ $('#aboutStatus').fadeIn(250).css('color', '#017c04').html('processing...'); },
            success: function(){ $('#aboutStatus').fadeIn(250).css('color', '#017c04').html('Saved Successfully!').delay(500).fadeOut(250); },
            error: function(){ $('#aboutStatus').fadeIn(250).css('color', '#ff464a').html('An error occurred!').delay(500).fadeOut(250); }
        });
        return false;
    });
});

这是我的HTML:

<?
$query = "SELECT * FROM pageContent WHERE page = 'about'";
$result = mysql_query($query);
while($rows = mysql_fetch_array($result)){
?>
    <div class="pageContent">
        <h2>About</h2>
        <form id="aboutUpdate" method="post">
        <textarea class="editor" id="aboutContent" cols="50" rows="20"><? echo $rows['content']; ?></textarea>
        <input type="submit" value="Save Now"><span class="updateStatus" id="aboutStatus"></span>
        </form>
    </div>
<?
}
?>

这是PHP(scripts / update.php):

$aboutContent = mysql_real_escape_string($_POST['aboutUpdate']);
if(isset($_POST['aboutUpdate'])){
    $query="UPDATE pageContent SET content='$aboutContent' WHERE page='about'";
    $result=mysql_query($query)or die(mysql_error());
    if($result){
        echo "Success";
    }
    else{
        echo "Update Error";
    }
}
else{
    header("location:http://google.com");
}

3 个答案:

答案 0 :(得分:2)

修正了问题。方法如下:

首先在TEXTAREA上我需要指定属性

name="aboutUpdate"

所以PHP isset可以提取数据。

其次,我注意到提交时变量是'undefined'。

var aboutContent = $('#aboutContent').attr('value');

这是有效的Javascript:

$('#aboutUpdate').submit(function() {
    $.ajax({
        type: "POST",
        url: "scripts/update.php",
        data: { aboutUpdate: $('#aboutContent').attr('value') },
        beforeSend: function(){
            $('#aboutStatus').fadeIn(250).css('color', '#017c04').html('processing...');
        },
        success: function(){
            $('#aboutStatus').fadeIn(250).css('color', '#017c04').html('Saved Successfully!').delay(2500).fadeOut(250);
        },
        error: function(){
            $('#aboutStatus').fadeIn(250).css('color', '#ff464a').html('An error occurred!').delay(2500).fadeOut(250);
        }
    });
    return false;
});

HTML:

<?
$query = "SELECT * FROM pageContent WHERE page = 'about'";
$result = mysql_query($query);
while($rows = mysql_fetch_array($result)){
?>
    <div class="pageContent">
        <h2>About</h2>
        <form id="aboutUpdate" method="post">
        <textarea class="editor" id="aboutContent" name="aboutUpdate" cols="50" rows="20"><? echo $rows['content']; ?></textarea>
        <input type="submit" value="Save Now"><span class="updateStatus" id="aboutStatus"></span>
        </form>
    </div>
<?
}
?>

PHP update.php:

$aboutContent = mysql_real_escape_string($_POST['aboutUpdate']);
if(isset($_POST['aboutUpdate'])){
    $query="UPDATE pageContent SET content='".$aboutContent."' WHERE page='about'";
    $result=mysql_query($query)or die(mysql_error());
    if($result){
        echo "Success";
    }
    else{
        echo "Update Error";
    }
}

答案 1 :(得分:0)

尝试使用这样的Ajax函数:

 $.ajax({
        type: "POST",
        url: "scripts/update.php",
        data: { aboutUpdate: aboutContent },
        beforeSend: function(){ $('#aboutStatus').fadeIn(250).css('color', '#017c04').html('processing...'); },
        success: function(){ $('#aboutStatus').fadeIn(250).css('color', '#017c04').html('Saved Successfully!').delay(500).fadeOut(250); },
        error: function(){ $('#aboutStatus').fadeIn(250).css('color', '#ff464a').html('An error occurred!').delay(500).fadeOut(250); }
    });

注意POST数据行的更改。

答案 2 :(得分:0)

绝对可以肯定的是,对于这个data: "aboutUpdate="+aboutContent,你发送了一些错误的东西。

应为data: {aboutUpdate: aboutContent}

另外我不确定,textarea实际上有属性值。尝试

$('#aboutContent').val()

$('#aboutContent').text()