Я искал решение в течение двух дней и больше не могу его принимать.Я заранее прошу прощения за длину этого вопроса.Я не пытаюсь кого-то сокрушить, я просто хотел убедиться, что включу все, что тебе может понадобиться, чтобы помочь мне.Заранее спасибо.Итак, теперь мой вопрос:
Ситуация:
С левой стороны моей страницы управления проектами у меня есть две маленькие формы.Один, чтобы добавить вехи, другой, чтобы добавить задачи / Todos.В правой части страницы я показываю проект в процессе его создания (добавляя этапы и задачи).
Я успешно отправляю формы через Ajax.Но Неважно, что я делаю, я не могу, чтобы «результаты» (правая сторона страницы) отражали обновленный контент без обновления страницы (что в первую очередь противоречит цели использования ajax).Кажется, я не могу понять .ajaxComplete
или как правильно заполнить success:
часть команды $.post
.
Я перепробовал слишком много вариантов, чтобы опубликовать здесь, поэтому я будупросто включите мою последнюю попытку:
javascript
$(document).ready(function() {
$("#results").load("i/getAllInfo.class.php");
$('#loader').hide()
.ajaxStart(function() {
$(this).show();
})
.ajaxStop(function() {
$(this).fadeOut(1000);
});
});
function addMilestoneForm() {
$.post("i/addMilestone.php",
$("#addMilestoneForm").serialize());
};
function addTodoForm() {
$.post("i/addTodo.php",
$("#addTodoForm").serialize());
};
PHP
i / getAllInfo.class.php
<?php
include("database.php");
class getAllInfo
{
public function getProjectInfo()
{
global $db;
$projectId = "1";
$qProject = sprintf("SELECT * FROM projects WHERE id = '%s'",
mysql_real_escape_string($projectId));
$qProjectResult = mysql_query($qProject);
return $qProjectResult;
}
public function getMilestoneInfo($projectName)
{
global $db;
$qMilestone = sprintf("SELECT * FROM milestones WHERE projectName = '%s' AND complete = 0",
mysql_real_escape_string($projectName));
$rMilestone = mysql_query($qMilestone);
return $rMilestone;
}
public function getTodoInfo($msId)
{
global $db;
$qTodo = sprintf("SELECT * FROM todos WHERE id = '%s' AND complete = 0",
mysql_real_escape_string($msId));
$rTodo = mysql_query($qTodo);
return $rTodo;
}
}
$g = new getAllInfo();
$pInfo = mysql_fetch_object($g->getProjectInfo());
$theProjectName = $pInfo->projectName;
$theProjectSummary = $pInfo->summary;
$rM = $g->getMilestoneInfo($theProjectName);
echo '<h2>' . $theProjectName . '</h2>';
while ($row = mysql_fetch_object($rM))
{
$msId = $row->id;
$milestone = $row->milestone;
$msEtaTime = $row->etaTime;
$msEtaScope = $row->etaScope;
?>
<ul style="float: left; clear: left; width: 85%; margin-left: 2%; margin-right: auto; margin-bottom: 10px;">
<p><b><?php echo $milestone; ?></b><br />
ETA: <?php echo $msEtaTime . ' ' . $msEtaScope; ?></p>
<?php
$rT = $g->getTodoInfo($msId);
while ($row = mysql_fetch_object($rT))
{
$todo = $row->todo;
$dep = $row->dependency;
?>
<li>
<span>
<a href="todos/index.php?todo=<?php echo $todo; ?>"><?php echo $todo; ?></a>
<span class="dependency">
<span class="innerDep"><?php echo $dep; ?></span>
</span>
</span>
</li>
<?php
}; ?>
</ul>
<?php
}; ?>
i / addMilestone.php
<?php
include("database.php");
global $db;
$theProjectName = htmlentities($_POST['projectName']);
$milestoneName = htmlentities($_POST['milestoneName']);
$etaTime = htmlentities($_POST['milestoneEtaTime']);
$etaScope = htmlentities($_POST['milestoneEtaScope']);
$query = sprintf("INSERT INTO milestones (projectName, milestone, etaTime, etaScope) VALUES ('%s', '%s', '%s', '%s')",
mysql_real_escape_string($theProjectName),
mysql_real_escape_string($milestoneName),
mysql_real_escape_string($etaTime),
mysql_real_escape_string($etaScope));
$result = $db->query($query);
if (!$result)
{
return false;
}
else
{
return true;
}
?>
i / addTodo.php
<?php
include("database.php");
global $db;
$milestoneId = htmlentities($_POST['addToMilestone']);
$todo = htmlentities($_POST['todoName']);
$etaTime = htmlentities($_POST['etaTime']);
$etaScope = htmlentities($_POST['etaScope']);
$query = sprintf("INSERT INTO todos (id, todo, etaTime, etaScope) VALUES ('%s', '%s', '%s', '%s')",
mysql_real_escape_string($milestoneId),
mysql_real_escape_string($todo),
mysql_real_escape_string($etaTime),
mysql_real_escape_string($etaScope));
$result = $db->query($query);
if (!$result)
{
return false;
}
else
{
return true;
}
?>
HTML
соответствующийкод (две формы, раздел результатов и т. д.)
<section id="content">
<span id="loader"></span>
<span id="alertBox"></span>
<section id="accordion">
<form id="addMilestoneForm" style="margin-bottom: 10px;" onsubmit="addMilestoneForm(); return false;">
<fieldset>
<h4>Milestones</h4>
<ul>
<li>
<label for="milestoneName">Name: </label>
<input type="hidden" name="projectName" value="FML" id="projectName" />
<input type="text" name="milestoneName" value="" id="milestoneName" />
</li>
<li>
<label for="milestoneEtaTime">ETA: </label>
<input type="text" name="milestoneEtaTime" id="milestoneEtaTime" style="width: 55%;" />
<select name="milestoneEtaScope" id="milestoneEtaScope">
<option value="minutes">minutes</option>
<option value="hours">hours</option>
<option value="days">days</option>
<option value="weeks">weeks</option>
<option value="months">months</option>
<option value="years">years</option>
</select>
</li>
</ul>
</fieldset>
<fieldset>
<button type="submit" formname="addMilestoneForm">Add</button>
</fieldset>
</form>
<form id="addTodoForm" onsubmit="addTodoForm(); return false;">
<h4>Todo's</h4>
<fieldset>
<ul>
<li>
<select name="addToMilestone" id="msSelect"></select>
</li>
<li>
<label for="todoName">Name: </label>
<input type="text" name="todoName" id="todoName" />
</li>
<li>
<label for="etaTime">ETA: </label>
<input type="text" name="etaTime" value="" />
<select name="etaScope">
<option value="minutes">minutes</option>
<option value="hours">hours</option>
<option value="days">days</option>
<option value="weeks">weeks</option>
<option value="months">months</option>
<option value="years">years</option>
</select>
</li>
</ul>
</fieldset>
<fieldset>
<input type="submit" value="Add" />
</fieldset>
</form>
</section>
<section id="results"></section>
</section>