从PHP foreach用表单调用Ajax函数

时间:2014-03-13 11:20:10

标签: php ajax forms foreach

我在这里遇到一点问题。我想从PHP foreach循环调用Ajax函数 这是我的代码:

的Ajax:

 function ajaxFunction(){
 var ajaxRequest;  // The variable that makes Ajax possible!

 try{
   // Opera 8.0+, Firefox, Safari
   ajaxRequest = new XMLHttpRequest();
 }catch (e){
   // Internet Explorer Browsers
   try{
      ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
   }catch (e) {
      try{
         ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
      }catch (e){
         // Something went wrong
         alert("Your browser broke!");
         return false;
      }
   }
 }
 // Create a function that will receive data 
 // sent from the server and will update
 // div section in the same page.
 ajaxRequest.onreadystatechange = function(){
   if(ajaxRequest.readyState == 4){
      var ajaxDisplay = document.getElementById('ajaxDiv');
      ajaxDisplay.innerHTML = ajaxRequest.responseText;
   }
 }
 // Now get the value from user and pass it to
 // server script.
 var bla = document.getElementById('bla').value;
 var queryString = "?bla=" + bla;
 ajaxRequest.open("GET", "ajax-example.php" + 
                              queryString, true);
 ajaxRequest.send(null); 
}

和php代码:

foreach ($data AS $key => $value){
    <form name="myForm">
    <input type="text" id="bla" name="bla" value="<?php echo $value['bla']; ?>">
    <input type="button" onclick="ajaxFunction(<?php echo $value['id']; ?>)" value="Speichern">
    </form>
}

问题:当我单击foreach循环中生成的几个按钮时,只有foreach循环的第一个结果出现在输出中。我想我必须将foreach循环(从数据库)中的个人ID提交到Ajax函数,但我不知道如何做到这一点。

也许这样调用这个函数?函数ajaxFunction(id)?!

1 个答案:

答案 0 :(得分:0)

在PHP foreach循环中,您为每个文本输入分配相同的ID。当你调用getElementById()时,它将总是在DOM中返回带有该ID的第一个元素,并且变量“bla”将被赋予该第一个元素的value属性。

看起来您可能一直在尝试将ID传入onclick属性中的ajaxFunction调用,因此您可以执行以下操作:

1)在文本输入的id属性中放置相同的echo语句。

<input type="text" id="<?php echo $value['id']; ?>" name="bla" value="<?php echo $value['bla']; ?>">

2)向ajaxFunction定义添加参数。

function ajaxFunction(requestedID){

3)并将该变量传递给getElementById调用。

var bla = document.getElementById(requestedID).value;