gpt4 book ai didi

php - 每页有多个表单的 jQuery forms.js

转载 作者:行者123 更新时间:2023-11-29 01:10:55 25 4
gpt4 key购买 nike

我想使用 php 和 ajax 将信息提交到 mySql 数据库。

发送信息的页面 (form.php) 具有多个从“while()”循环生成的表单。

成功后,我会在提交数据的特定表单上方更新一个 div。

我目前正在使用 jQuery 和 jquery form plugin .

我已经成功地将数据获取到数据库中,但是我在将响应发送回正确的 div 时遇到了问题。我已经成功地获得了对 while() 循环之外的 div 的响应。但是,我还没有成功地获得对循环内 div 的响应。我在下面的代码中放置了一个名为: ">我希望将便条放在哪里。

我知道这与我的 javascript 函数有关:

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

#noteReturn 函数没有指定它应该放在哪个业务 div 中。

我希望这是有道理的。

感谢您的帮助。

代码如下:

<!-- 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"; }
?>

最佳答案

更改此代码:

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

对此:

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

还有这段代码:

<?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";
}
?>

对此:

<?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));
}
?>

发生了什么事?

对 PHP 代码的更改是利用 PHP 的 json_encode函数打印出添加注释的业务 ID 以及实际的注释文本。在 javascript 代码中,我添加了 'json' 的 dataType 来告诉脚本期望的响应格式。在 success 回调中收到请求后,data 变量就是一个对象,其中包含我们通过 json_encode 传递的值。所以 data.id 有业务 ID 而 data.note 有新的笔记。使用 jQuery 的 html()操作函数,div内部的html更新到最新的note。 div 选择器使用我们传递的 id,因此我们可以更新相应的 div。

此外,这有点偏离主题,但请确保您始终使用 mysql_real_escape_string当像你一样将值放入查询时。如果你不使用它,你的查询将很容易受到注入(inject)攻击,而且它们并不漂亮。如果客户决定输入 ');DROP TABLE businesses; 的注释值,您会感到很痛苦。最好切换到 PDOMySQLi并使用 prepared statements ,因为它们是当今进行查询的“正确”方式。

关于php - 每页有多个表单的 jQuery forms.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/531395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com