jQuery sayfa başına birden fazla form ile forms.js

1 Cevap php

Ben php ve ajax kullanarak bir MySQL veritabanı bilgi sunmak istiyorum.

Bilgi (form.php) gönderildiğini sayfa "while ()" döngü oluşturulur birden fazla formları vardır.

Başarı, ben veri teslim edildiği özel forma üzerinde bir div bir tepki güncellemek istiyorsunuz.

Ben şu anda jQuery ve jquery form plugin kullanıyorum.

I have been successful in getting the data to the database, however I am having trouble with the response being sent back to the proper div. I have been successful in getting a response back to a div that is outside of the while() loop. I have not, however, been successful in getting a response back to a div within the loop. I have placed in the code below a div called: "> Where I would like the note to be placed.

Bu benim javascript işlevi ile ilgili her şey var biliyorum:

<script type="text/javascript">
jQuery(document).ready(function() {
    jQuery('form').ajaxForm({
        target: '#noteReturn',
        success: function() { $('#noteReturn').fadeIn('slow'); }
    });
});
</script>

# NoteReturn işlevi işletmeler içeri konulmalıdır div belirtmek değil

Bu mantıklı umuyoruz.

Yardımınız için teşekkür ederim.

Kod aşağıda:

<!-- the form.php page -->
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/forms.js"></script> 
<script type="text/javascript"> 
jQuery(document).ready(function() { 
    jQuery('form').ajaxForm({ 
    target: '#noteReturn',
    success: function() { 
    $('#noteReturn').fadeIn('slow'); } 
    }); 
});
</script>  
<?php
$query = mysql_query("SELECT * FROM businesses");
while( $row = mysql_fetch_assoc( $query ) ):
    $b_id = $row['bid'];
?>

<div class='notes'> 

<?php  
// query the db for notes associated with business... return notes texts and notes dates
$notesQuery = mysql_query("SELECT business_id, notes, messageDate FROM notes WHERE notes.business_id = $b_id ORDER BY messageDate");
while( $NoteRow = mysql_fetch_assoc( $notesQuery ) ) { 
extract($NoteRow); 
echo "$notes<br/><span class='noteDate'>$messageDate</span><br />"; 
}  // end while$notesQuery
?> 
<!-- this is where i would like jQuery to return the new note -->
<div id="noteReturn<?php echo $b_id; ?>"></div> 

<!-- begin note form -->
<form name="noteForm" action="notesProcess.php" method="post">
    <input type="text"  name="note" />
    <input type="hidden" value="<?php echo $b_id ?>" name="bid" />
    <input type="submit" class="button"  value="Send" />
</form>

</div> <!-- end div.notes --> 
<?php
endwhile;
?> 

<!-- /////////////////////////////////////////////////////
The page that the form submits to is this (notesProcess.php): 
///////////////////////////////////////////////////// -->
<?php
$note = $_POST['note'];
$id = $_POST['bid'];
$sql = "INSERT INTO notes (business_id, notes) VALUES ('$id', '$note')";
$result = mysql_query( $sql );
if( $result ) {
echo " $note"; }
?>

1 Cevap

Bu kodu değiştirin:

jQuery('form').ajaxForm({ 
    target: '#noteReturn',
    success: function() { 
        $('#noteReturn').fadeIn('slow');
    } 
});

Buna:

jQuery('form').ajaxForm({ 
    target: '#noteReturn',
    dataType: 'json',
    success: function(data) { 
        $('#noteReturn' + data.id).html(data.note).fadeIn('slow');
    } 
});

Ve bu kodu:

<?php
$note = $_POST['note'];
$id = $_POST['bid'];
$sql = "INSERT INTO notes (business_id, notes) VALUES ('$id', '$note')";
$result = mysql_query( $sql );
if($result) {
    echo " $note";
}
?>

Buna:

<?php
$note = mysql_real_escape_string($_POST['note']);
$id = mysql_real_escape_string($_POST['bid']);
$sql = "INSERT INTO notes (business_id, notes) VALUES ('$id', '$note')";
$result = mysql_query( $sql );
if($result) {
    print json_encode(array("id" => $id, "note" => $note));
}
?>

What happened?

PHP kod değişiklik PHP'nin json_encode function to print out the id of the business to which the note was added as well as the actual note text. In the javascript code, I added the dataType 'json' beklemek yanıt ne biçim komut söylemek için kullanımı yapıyor. Isteğin success geri arama alındığında, data değişken biz json_encode geçirilir değerleri olan bir amacıdır. Yani data.id iş kimliği vardır ve data.note yeni bir not vardır. JQuery 'html() manipülasyon işlevi kullanarak, div iç html son nota güncellenir. Div seçici biz geçti id kullanır, böylece biz gelen div güncelleyebilirsiniz.

Ayrıca, bu biraz konu dışı, ama her zaman mysql_real_escape_string when putting values into a query like you are. If you do not use this, your queries will be vulnerable and susceptible to injection attacks, and they are not pretty. If a customer decided to enter a note value of ');DROP TABLE businesses; gerçekten acı hissederiz kullandığınızdan emin olun. Onlar günümüzde sorguları yapıyor 'doğru' yolu olarak Tercihen, PDO or MySQLi and use prepared statements geçmek.