gpt4 book ai didi

php - 使用 AJAX(无刷新)更新部分动态表单 - 无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-03 12:27:40 25 4
gpt4 key购买 nike

我需要将此表单发布到数据库并检索新添加的信息,而无需使用 XHR 进行刷新。

页面加载了一些可以编辑的初始元素,并且可以通过按下按钮动态添加更多"new"元素(新用户需要这样做,因为他们没有预先存在的任务。它会跟踪你是谁与 session_id 一起)。

我已经在这里工作了 13 个多小时,有点累了。

代码:

索引.php

<?php 
//Sets unique session for the current visitor and keeps track of information for use with database
$time = time();
$date = $today = date("Ymd");
$id = $time + $date;

$id = session_id();
if(empty($id)) session_start();

//echo "SID: ".SID."<br>session_id(): ".session_id()."<br>COOKIE: ".$_COOKIE["PHPSESSID"];


?>
<!doctype html>
<html>
<head>
<meta charset='utf-8'>
<title>Simple To-Do List</title>
<?php
// Create connection via my connect.php file
require 'connect.php';

// Create query
$query= "select * from checklist where SID = '".session_id()."'";
$result = mysql_query($query);

// Create requisite array for checklist
$checklistItems = array();

//Check to ensure query won't implode and is valid
if($result === FALSE) {
die(mysql_error());
}

// Calculates number of rows from query
$num=mysql_numrows($result);

mysql_close($con);

?>
<!-- javascript code to dynamically add new form fields as well as check\uncheck all boxes -->
<script src="//code.jquery.com/jquery-latest.min.js" language="javascript" type="text/javascript"></script>
<script src="addInput.js" language="Javascript" type="text/javascript"></script>



</head>
<body>

<h1>My To-Dos</h1>


<form name="checklist" id="checklist" class="checklist">
<?php // Loop through query results
while($row = mysql_fetch_array($result))
{
$entry = $row['Entry'];
$CID = $row['CID'];
$checked =$row['Checked'];
// echo $CID;
echo "<input type=\"text\" value=\"$entry\" name=\"textfield$CID;\" id=\"textfield$CID;\" onchange=\"showUser(this.value)\" />";
echo "<input type=\"checkbox\" name=\"checkbox$CID;\" id=\"checkbox$CID;\" value=\"$checked\"".(($checked == '1')? ' checked="checked"' : '')." />";
echo "<br>";
}
?>
<div id="dynamicInput"></div>
<input type="submit" id="checklistSubmit" name="checklistSubmit" class="checklist-submit"> <input type="button" id="CompleteAll" name="CompleteAll" value="Check All" onclick="javascript:checkAll('checklist', true);"><input type="button" id="UncheckAll" name="UncheckAll" value="Uncheck All" onclick="javascript:checkAll('checklist', false);">
<input type="button" value="Add another text input" onClick="addInput('dynamicInput');"></form>


</body>
</html>

connect.php

<?php 

// Create connection
$con=mysql_connect("localhost","root","");
$selected = mysql_select_db("madmonk",$con);

// Check connection
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysql_connect_error();
}

?>

addInput.js

// Creates new dynamic elements within HTML body
var counter = 0;
var limit = 8;

function addInput(divName){
i=counter; i++;
if (counter == limit) {
alert("You have reached the limit of adding " + counter + " inputs");
}
else {

var newdiv = document.createElement('div');
newdiv.innerHTML = " <input type='text'name='myInputs["+i+"]'><input type='checkbox' name='myInputs["+i+"]'><br>";
document.getElementById(divName).appendChild(newdiv);
counter++;
}
}

//Checks\unchecks all checkboxes on the web page
function checkAll(formname, checktoggle)
{
var checkboxes = new Array();
checkboxes = document[formname].getElementsByTagName('input');
for (var i=0; i<checkboxes.length; i++) {
if (checkboxes[i].type == 'checkbox') {
checkboxes[i].checked = checktoggle;
}
}
}


//AJAX code to communicate with server without page refresh
$('checklistSubmit').click(function(e) {
$(e).stopPropagation();

$.post({
url: 'processor.php',
data: $('#checklist').serialize(),
dataType: 'html',
success: function(data, status, jqXHR) {
$('div.successmessage').html(data);
//success callback function
alert (success);
},
error: function() {
//error callback function
alert (failure);
}
});
});

我确实知道上面的 AJAX 代码存在问题。这很关键,我无法让它工作。我以前从未尝试过做这样的事情,所以我决定尝试并全神贯注并完成它。啊。

processor.php

<?php
require 'connect.php';

$entry = $_POST['entry'];
$checked = $_POST['checked'];


$num_items = count($entry);
for ($i = 0; $i < $num_items; $i++)
{
$sql="INSERT INTO checklist (Entry, Checked, SID)
VALUES ($checked, $entry, session_id()) WHERE SID = '".session_id()."'";}


mysql_close($con);

?>

^这是粗略的,完全未完成。

  1. 我如何与动态字段交互并循环遍历它们以进行管道传输通过mysql和php进入数据库?

  2. 如何使用新值更新 index.php 页面无缝添加刚刚添加的新项目?

  3. 如何让 AJAX 工作?

为了我的缘故非常具体。我对使用 AJAX 非常非常陌生。

最佳答案

$('checklistSubmit')应该是 $('#checklistSubmit') .你需要 #查找 ID。

此外,点击处理程序绑定(bind)应该在 $(function() { ... }); 内这样它就不会运行,直到表单加载到 DOM 中。

您的成功函数包含 $('div.successmessage').html(data);但我在您的 PHP 中没有看到包含该类的 DIV。

$(e).stopPropagation();

应该是:

e.stopPropagation();

e不是 DOM 元素,它是一个事件。

关于php - 使用 AJAX(无刷新)更新部分动态表单 - 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16869604/

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