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 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";
    }
}
于 2012-08-17T21:41:27.097 に答える
0

確かに、これでdata: "aboutUpdate="+aboutContentあなたは完全に間違った何かを送っています。

そのはずdata: {aboutUpdate: aboutContent}

さらに、textareaに実際に属性値があるかどうかはわかりません。試す

$('#aboutContent').val()

また

$('#aboutContent').text()
于 2012-08-17T10:32:01.453 に答える
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 に答える