Php 加载到div w/AJAX中的表单不再提交
让我先为信息过载道歉。我不知道什么不起作用,所以我在这里包括了一些东西 我有一个名为jobs.php的页面,它在左侧显示了一个打开的“jobs”表。单击“添加作业”按钮时,用于添加新作业的表单将加载到页面右侧的div中,方法如下:Php 加载到div w/AJAX中的表单不再提交,php,ajax,mysqli,Php,Ajax,Mysqli,让我先为信息过载道歉。我不知道什么不起作用,所以我在这里包括了一些东西 我有一个名为jobs.php的页面,它在左侧显示了一个打开的“jobs”表。单击“添加作业”按钮时,用于添加新作业的表单将加载到页面右侧的div中,方法如下: //Get Next Job $query = "SELECT * FROM jobs WHERE job_id = (SELECT MAX(job_id) FROM jobs)"; $result = $mysqli->query($query) or d
//Get Next Job
$query = "SELECT * FROM jobs WHERE job_id = (SELECT MAX(job_id) FROM jobs)";
$result = $mysqli->query($query) or die($mysqli->error . __LINE__);
$topjob = $result->fetch_assoc();
$nxtjob = $topjob['job_id'] + 1;
<button class="btn btn-primary pull-right ajaxCall" id="addJobBtn" onclick="nxtJob('<?php echo $nxtjob; ?>')">Add Job</button>
function nxtJob(job) {
var nxtjob = job;
$("#jobDetails").html("Loading...");
$.ajax({
type: "GET",
data: {'id':nxtjob},
url: "addjob.php",
async: true,
success: function(data) {
$("#jobDetails").html(data);
}
});
}
get变量背后的原因是我需要下一个作业作为表单中的值使用
表单本身位于addjob.php上,非常简化的版本如下:
<?php
require 'database.php';
if (isset($_POST['addNewJob'])) {
$error = '';
//Check Job # for duplicate if manually changed
$job = $_POST['addjob'];
$query = "SELECT job_id from jobs WHERE job_id = '$job'";
$result = $mysqli->query($query) or die($mysqli->error . __LINE__);
if (mysqli_num_rows($result) > 0) {
$error .= '<br/>Job # already exists.'
}
if ($error == '') {
//Set variables for insert
$job = $mysqli->real_escape_string($_POST['addjob']);
$status = $mysqli->real_escape_string($_POST['addstatus']);
$sql = "INSERT INTO jobs (job_id, status)
VALUES ('$job', '$status')";
if (mysqli_query($mysqli, $sql)) {
$validation = '< div class="alert alert-success" > Job ' . $job . ' Successfully Added </div >';
} else {
$validation = '<div class="alert alert-danger" > "ERROR: Could not able to execute' . $sql . mysqli_error($mysqli);
}
} else {
$validation = ' <div class="alert alert - danger">Job Not Added:' . $error . '</div>';
}
?>
<form class="form - horizontal" method="post" id="addJobForm">
<div class="form - group">
<label for="addjob" class="col - sm - 2 control - label">Job #</label>
<div class="col - sm - 4">
<input type="text" class="form - control" name="addjob"
value=" <?php echo $nxtjob; ?>">
</div>
<label for="addstatus" class="col-sm-2 control-label">Status</label>
<div class="col-sm-4">
<?php
$options = array("New", "In Progress", "Waiting for Parts", "Ready for Customer", "Completed");
?>
<select class="form-control" name="addstatus">
<?php foreach ($options as $option): ?>
<option>
<?php echo $option; ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
<button type="submit" name="addNewJob" id="addNewJob" class="btn btn-primary pull-right">Submit New
Job
</button>
</form>
<?php echo $validation; ?>
当在下面的jobs.php上单击addjob按钮时,表单加载得很漂亮,但不起作用
<div class="row">
<div class="col-md-4">
<table class="table table-hover" id="jobTable" data-link="row">
<thead>
<tr>
<th class="col-md-2">Job #</th>
<th class="col-md-4">Customer Name</th>
<th class="col-md-6">Description</th>
</tr>
</thead>
<?php
while ($row = mysqli_fetch_array($jobs)) {
// Print out the contents of the entry
date_default_timezone_set('America/Los_Angeles');
$startdate = date("m/d/Y", strtotime($row['started']));
echo '<tr>';
echo '<td><a class="ajaxCall" href="#" rel="' . $row['job_id'] . '"></a>' . $row['job_id'] . '</td>';
echo '<td>' . $row['cust_name'] . '</td>';
echo '<td class="col-lg-2">' . $row['description'] . '</td>';
echo '</tr>';
}
?>
</tbody>
</table>
</div>
<div class="col-md-8">
<div id='jobDetails'></div>
</div>
</div>
当我单击SubmitNewJob时,页面的右侧将变为空白。表单将消失,并且不会在sql表中创建新条目。但是,如果我直接从addjob.php使用该表单,它就可以正常工作
我在一次AJAX调用后读到了关于绑定的内容,我猜这与此有关,但我似乎无法让它正常工作。这是我第一次尝试AJAX,非常感谢您的帮助。没有任何东西调用您的nxtJobjob函数。您如何提交表单?它没有action属性,因此它将提交到原始页面URL。我的错误是,我忘记了包含按钮的代码。我编辑了这个问题以反映它。单击按钮可通过nxtjob函数成功显示所需的表单。@Barmar表单是使用if isset$\u POST['addNewJob']提交的。您的AJAX调用未发送addNewJob参数,因此测试将失败。它发送的唯一参数是{id:nxtjob}。