0

我正在尝试构建一个小型 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");
}
4

3 回答 3

2

修复了问题。方法如下:

首先在 TEXTAREA 我需要指定属性

name="aboutUpdate"

所以 PHP isset 可以提取数据。

其次,我注意到提交时有一个变量“未定义”。

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更新.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";
    }
}
于 2012-08-17T21:41:27.097 回答
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 数据行的变化。

于 2012-08-17T03:25:04.563 回答
0

绝对可以肯定,这样data: "aboutUpdate="+aboutContent你发送的东西是完全错误的。

它应该是data: {aboutUpdate: aboutContent}

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

$('#aboutContent').val()

或者

$('#aboutContent').text()
于 2012-08-17T10:32:01.453 回答