Javascript 通过ajax传递唯一的输入值不起作用

Javascript 通过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

在过去的两周里,我一直在寻找答案。我的问题是我有一个PHP foreach循环,在我的foreach循环中,我有div标记作为从数据库获取的每个数据的一行。每个div行都有HTML输入元素和一个按钮,用于通过ajax请求将这些输入值提交给DB。当我提交任何div行的输入值时,问题就开始了,只有第一行的值得到了更改

现在,为了调试这个问题,我需要检查每个div行的输入元素是否具有唯一的id。事实证明,我的输入元素有一个唯一的id

<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
      })
  })