2011-02-16 112 views
0

我有一个表单,它有几个文本输入字段和一个下拉列表。下拉列表的内容由php脚本生成以匹配数据库结构。我想要做的是让用户从下拉列表中选择一个选项,然后根据选择更新表单视图,从数据库中加载一些文本,然后将其放入供用户编辑(AJAX样式是)。我使用php再次生成整个表单,将查询的内容添加到视图中。重新获得<form>-JavaScript后的元素值.innerHTML更改

这里是问题:现在,当用户对输入字段的文本内容进行了更改后,他按下了“提交更改”按钮。现在,我必须获取文本字段的更改内容以更新数据库中的行。我不知道如何正确地做到这一点。

我正在尝试使用表单的POST方法将更改后的内容传递给php脚本,但由于AJAX样式并未真正更改页面的HTML,因此无法获取任何内容。

下面是我如何努力实现这个很短的再现:

页头:

<head> 
<script> 
function updateForm(str) { 
    if (window.XMLHttpRequest) { 
     xmlhttp=new XMLHttpRequest(); 
    } 
    xmlhttp.onreadystatechange=function() { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
       document.getElementById("divContainingForm").innerHTML=xmlhttp.responseText; 
      } 
    } 

    xmlhttp.open("POST","/scripts/regenerateTheForm.php",true); 
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
    xmlhttp.send("id=" + str); 
} 
</script> 
</head> 

页面正文:从regenerateTheFrom

<form action="/scripts/changeTheOldOne.php" method="post"> 
    <div id="form"> 
     <fieldset> 
      <label for='list'>Content to edit</label> 
      <select id='list' name="list" onchange='updateForm(this.value)' autofocus> 
      <?php echo(generateListOptions()); ?> //php-function 
      </select> 
      </fieldset> 
      <fieldset> 
       <label for="header">Header</label> 
       <input required type="text" id="header" /> 
      </fieldset> 
      <fieldset> 
       <label for="body">Plain text</label> 
       <textarea required id="body" rows="16" maxlength="1500"></textarea> 
      </fieldset> 
     </fieldset> 
    </div> 
</form> 

功能。 php返回生成的表单,该表单现在在字段中包含文本,JavaScript将其写入页面并更新用户视图。用户现在可以看到检索到的内容并对其进行编辑,但是当提交表单时,changeTheOldOne.php无法从$ _POST数组中获取AJAX更新和用户编辑的表单值。

+0

我明白你想要做什么,但是你需要为我们展示一些代码,以便能够提供相关的帮助。希望不是你几乎生产的HTML/JS的巨大的斑点,而是你试图去做的一些小的再现。 – 2011-02-16 17:15:16

回答

0

问题解决了!

这只是一个小菜。忘记了输入字段的名称标签,这就是为什么PHP POST无法获得任何信息。我认为这个ID对于PHP来说足够了,但它不是!

相关问题