php - 在多个表单ajax中提交一个表单
问题描述
我已经潜伏了一段时间,但这是我的第一个帖子(并促使我注册),我搜索了无数帖子,但找不到最有效的解决方案。这是一个项目的一部分,用户搜索数据库并可以选择将返回的结果添加到保存的位置(将 id、resid 发布到单独的 mysql 表中)。
搜索功能在一个单独的 php 文件中,代码的相关部分如下(我已经剥离了很多格式):
// Output HTML formats
$html ='<tr >
<form id="myForm" method="post">
<input type="hidden" id="resid" name="resid" value="ther3sidd">
<input type="hidden" id="lesid" name="lesid" value="liD1">
<input type="button" id="submitFormData" onclick="SubmitFormData()" value="Submit" />
</form>
</tr>';
值“ther3sidd”和“liD1”被替换为搜索返回的项目的唯一值,并且是数值。在面向用户的页面上还会返回多个表单,它们都具有相同的 myForm id(但不同的 lesid 和 resid)。
搜索结果会输出到用户所在的页面,然后可以按下一个按钮,使用下面的脚本将结果添加到 mysql 表中(存储在用户所在的页面中)。
function SubmitFormData() {
var lesid = $('input[name="lesid"]').val();
var resid = $('input[name="resid"]').val();
var dataString = {lesid: lesid, resid: resid}
$.ajax({
type: "POST",
url: 'lesresadd.php',
data: dataString,
})}
下面是 php 文件 lesresadd.php(没有连接信息)
$lessonid = $_POST['lesid'];
$resourceid = $_POST['resid'];
$sql = "INSERT INTO lessons_resources (lesson_id, resource_id)
VALUES ('$lessonid', '$resourceid')";
$result = $conn->query($sql)
该代码工作正常,可以将数据提交到 mysql 表,但是,主要问题是 resid 和 lesid 的值是搜索功能的第一个结果(而不是单击按钮选择的结果)。我知道我需要在变量的某处使用“this”,但是,我不确定语法是否正确。例如,我尝试了以下(以及许多变体):
var lesid = $this().('input[name="lesid"]').val();
但这不起作用。也许,我需要对代码做更多的事情,而且它并不像在某处添加“this”那么简单。我对 AJAX 相当陌生,并且完全是通过访问站点自学的,就像堆栈溢出一样。任何建议将不胜感激。
解决方案
这不是最整洁的解决方案,但这里有:
$html = "";
$i = 1;
while($r = mysql_fetch_object($res))
{
$html .='<tr>
<input type="hidden" id="resid'.$i.'" name="resid" value="ther3sidd">
<input type="hidden" id="lesid'.$i.'" name="lesid" value="liD1">
<input type="button" class="submitFormData" onclick="SubmitFormData('.$i.')" value="Submit" />
</tr>';
$i++;
}
然后在你的 JavaScript 中:
function SubmitFormData(id) {
var lesid = $('#lesid'+id).val();
var resid = $('#resid'+id).val();
var dataString = {lesid: lesid, resid: resid}
$.ajax({
type: "POST",
url: 'lesresadd.php',
data: dataString,
})}
推荐阅读
- rust - Rust 无法识别借用在循环结束时结束
- firebase - 从现有的云功能 Flutter 项目开始
- c# - BlockingCollection 中的多个消费者是否同时处理?
- javascript - Vue.js 在console.log 中看不到数据
- matplotlib - Jupyter notebook 中的交互式 matplotlib 与远程服务器上的 shell 命令“!python filename.py” ssh -i 访问
- sql - 在sql中分组后获取总百分比拆分
- mysql - 如果找不到数据,Mysql会添加临时列
- amazon-sagemaker - 如何使用 Estimator 在 sagemaker 中保存 model.tar.gz 文件
- javascript - JavaScript Dom 操作以删除文本
- azure-devops - 订阅 Microsoft Teams 中的服务挂钩时,有没有办法在 Azure Devops/Repos/Pipelines 生成的消息中获取 @提及?