1

私は単純な壁の支柱に取り組んでいて、それをトラブルシューティングするのに苦労しています。ページをリロードせずに投稿したい(Facebookの投稿のように)。送信を押しても実際には何も起こりません。ページがリロードされ、投稿は表示されず、データベースには何も挿入されません。理由がわかりません。助言がありますか?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<HTML>
<HEAD>
<script type="text/javascript" src="js/jquery.js"> </script>
</HEAD>
<BODY>
<form id="submit_wall"&gt;
<label for="message_wall">Share your message on the Wall</label>
<input type="text" id="message_wall" />
<button type="submit">Post to wall</button>
</form>
<ul id="wall">
</ul>

<script type="text/javascript">
$(document).ready(function(){
$("form#submit_wall").submit(function() {

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

$.ajax({
type: "POST",
url: "insert.php",
data:"message_wall="+ message_wall,
success: function(){
$("ul#wall").prepend("<li style="display: none;">"+message_wall+"</li>");
$("ul#wall li:first").fadeIn();
}
});
return false;
});
});
</script>
</body>

insert.phpは単純なdb入力です:

<?php
if(isset($_POST['message_wall'])){
/* Connection to Database */
$link = mysql_connect($host, $un, $pw) or die("Couldn't make connection.");
@mysql_select_db($db, $link) or die("Couldn't select database");

/* Remove HTML tag to prevent query injection */
$message = strip_tags($_POST['message_wall']);

$sql = 'INSERT INTO wall ("message") VALUES( "'.$message.'")';
mysql_query($sql);
echo $message;
} else { echo '0'; }
?>
4

3 に答える 3

1

まず第一に、これはまったく問題ではありません。しかし、私が指摘したいのは、あなたが使うべきだということです

var message_wall = $('#message_wall').val();

それ以外の

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

それ以外は、間違っている可能性のあるものは何も見当たりません。もう少し詳しく説明してください

これが「ウォールポスト」の部分です。もちろん、ajax呼び出しを追加する必要があります

http://jsfiddle.net/myuX3/

編集:

$.ajax({
    type: "POST",
    url: "insert.php",
    data:{'message_wall':message_wall}, /* This is the line i've modified */
    success: function(){
        $("ul#wall").prepend("<li style="display: none;">"+message_wall+"</li>");
        $("ul#wall li:first").fadeIn();
    }
});
于 2012-06-26T01:04:15.773 に答える
1

index.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<HTML>
<HEAD>
<script type="text/javascript" src="js/jquery.js"></script>
</HEAD>
<BODY>
<label for="message_wall">Share your message on the Wall</label>
<form name="post" id="post" name="post">
<input type="text" id="message_wall" name="message_wall"/>
<input type="submit" id="submitbtn" value="Post to wall"/>
</form>
<ul id="wall">
</ul>

<script type="text/javascript">
$(document).ready(function(){

$('#submitbtn').click(function() {

    var message_wall = $('#message_wall').val();
    $.ajax({
        type: "POST",
        url: "insert.php",
        data:"message_wall="+ message_wall,
        success: function(){      
            var $d=$("<li>"+message_wall+"</li>").fadeIn(500,function() {
                document.post.reset(); 
            });
            $("ul#wall").prepend($d);
        }
    });
    return false;
});
});

</script>

insert.php :(名前、パスワード、データベースはすべて正しいです。私はそれらをトリプルチェックしました)

<?php
if(isset($_POST['message_wall'])){
/* Connection to Database */
$link = mysql_connect("localhost", "******", "******") or die("Couldn't make connection.");
@mysql_select_db("*******", $link) or die("Couldn't select database");

/* Remove HTML tag to prevent query injection */
$message = strip_tags($_POST['message_wall']);

$sql = 'INSERT INTO wall ("message") VALUES( "'.$message.'")';
mysql_query($sql);
echo $message;
} else { echo 'fail'; }
?>
于 2012-06-28T21:22:30.107 に答える
0
<input type="text" id="message_wall" name='message_wall' /> // you can use "name" attribute and "serialize()" method

js:

data: $(this).serialize(); 
success: function(data){ // pass the data to your success callback
$("ul#wall").prepend("<li style='display: none;'>"+data+"</li>"); // correct the quotation marks
于 2012-06-26T01:13:58.957 に答える