Javascript 通过ajax传递唯一的输入值不起作用
在过去的两周里,我一直在寻找答案。我的问题是我有一个PHP foreach循环,在我的foreach循环中,我有div标记作为从数据库获取的每个数据的一行。每个div行都有HTML输入元素和一个按钮,用于通过ajax请求将这些输入值提交给DB。当我提交任何div行的输入值时,问题就开始了,只有第一行的值得到了更改 现在,为了调试这个问题,我需要检查每个div行的输入元素是否具有唯一的id。事实证明,我的输入元素有一个唯一的idJavascript 通过ajax传递唯一的输入值不起作用,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,在过去的两周里,我一直在寻找答案。我的问题是我有一个PHP foreach循环,在我的foreach循环中,我有div标记作为从数据库获取的每个数据的一行。每个div行都有HTML输入元素和一个按钮,用于通过ajax请求将这些输入值提交给DB。当我提交任何div行的输入值时,问题就开始了,只有第一行的值得到了更改 现在,为了调试这个问题,我需要检查每个div行的输入元素是否具有唯一的id。事实证明,我的输入元素有一个唯一的id <input type="text" name="id" va
<input type="text" name="id" value='.$id.'>
为了解决这个问题,我修改了代码,方法是删除按钮的提交输入,并在按钮上传递设置onclick()以调用ajax请求
function launchAjax() {
console.log($("[name=id]").val()); // debug to check the value of id
$.post(
"inbetween.php/",
{
现在,当我单击按钮调用ajax函数时,什么也没有发生,我在控制台窗口中得到一个错误,即launchAjax(())未定义
我的完整代码:
<?php
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $row) {
<div>
<input type="hidden" name="id" value="<?php echo $row['no'] ?>"><br>
<fieldset>
<div>
<label>XYZ Question</label>
</div>
<div>
<input type="radio" name="optradio" value="NO">NO
<input type="radio" name="optradio" value="YES">YES
</div>
</fieldset>
<fieldset>
<div>
<label>XYZ Question</label>
</div>
<div>
<input type="radio" name="optradio1" value="NO">NO
<input type="radio" name="optradio1" value="YES">YES
</div>
</fieldset>
<fieldset>
<div>
<label>XYZ Question</label>
</div>
<div>
<input type="radio" name="optradio2" value="NO">NO
<input type="radio" name="optradio2" value="YES">YES
</div>
</fieldset>
<button onclick="launchAjax()" class="btn">SUBMIT</button>
</div>
}
?>
我所要做的就是保存单击的div行输入元素的值,而不刷新网页
请帮助我,从过去的两周开始,我一直在努力做到这一点
提前感谢您您正在调用
onclick
作为
提交
当我们以上述方式调用函数时,它们应该是全局定义的。当我们在文档ready
中声明任何函数时,范围不是全局的
要使它们成为全局的,请删除$(文档)。准备就绪
var launchAjax=function(){
控制台日志(“测试”);
美元邮政(
“inbetween.php/”{
id:$(“[name=id]”).val(),
问题:$(“[name=optradio]:选中”).val(),
问题1:$(“[name=optradio1]:选中”).val(),
问题2:$(“[name=optradio2]:选中”).val(),
}
);
}
编辑:如果您想让它在文档中工作,您需要调用click,如下所示
将id添加到按钮,如下所示
提交
编辑2:我尝试调试您的代码,发现您没有使用serialize()
方法获取所有表单数据。我已按如下方式更新了代码
$(文档).ready(函数(e){
//请致电提交表格
$(“#myForm”).submit(函数(e){
e、 预防默认值();
//在这里,您可以使用serialize()方法获取所有表单数据
var form_data=$(this).serialize();
console.log(form_数据);
//通过ajax post请求发送此表单数据
});
});
XYZ问题
不
对
XYZ问题
不
对
XYZ问题
不
对
提交
每个输入都有相同的名称吗?
对不起,我不明白你问了什么。我在PHP循环中有表单,每次循环运行时,这些输入的名称都是相同的。尽管我担心的是,在单击提交后,我只在执行console.log时传递了第一个div行输入值,因为我更改了提交按钮并将onclick传递给ajax,这给了我一个error@stactoverflowsam1name=id:只列出了1个值。我不确定您希望它提交什么。您能编辑并提供您希望的内容吗,特别是当您说“第一个div行”时我们可以在Ajax中做到这一点,但首先我们需要检查表单是否有问题?一旦您看到所有的值,我们就可以调试JS,看看哪里出了问题。非常感谢@AnandG对我的帮助out@AnandG你能解释一下行动的形式吗?
$(document).ready(function(){
var launchAjax = function () {
$.post(
"inbetween.php/",
{
id: $("[name=id]").val(),
question: $("[name=optradio]:checked").val(),
question1: $("[name=optradio1]:checked").val(),
question2: $("[name=optradio2]:checked").val(),
}
);
}
});
$(document).ready(function() {
$("submitBtn").on('click', function(){
//Do Your Ajax here
})
})