我有一个用户论坛页面'帖子。我需要创建一个回复文本区域,用户可以在其中回复任何帖子。问题是每当回复帖子时,我的JS脚本都无法检测到回复所属的特定帖子。
以下是生成帖子列表并创建回复表单的php片段。
echo'
<div id="div'.$post_id.'"></div>
<form name="form'.$post_id.'">'; echo'
<div class="row">
<div class="col-sm-1">
<img src="" width="70" height="70" class="img img-responsive" alt="Your profile picture.">
</div>
<div class="col-sm-4">
<textarea placeholder="Your reply" name="user_reply" class="form-control" maxlength="250" rows="3" required></textarea>
<input type="hidden" name="user_id" value="'.$userId .'">
<input type="hidden" name="time" value="'.$time .'">
<input type="hidden" name="date" value="'.$date .'">
</div>
<div class="col-sm-1">
<button name="data" type="button" onclick="sendReply(\' '.$post_id.' \');">Reply</button>
</div>
</div>
</form>
</div>';
&#13;
现在这里是JS脚本,我认为应该选择用户的回复并将值发送到reply.php文件
<script>
function sendReply(id){
x='document.form'+id;
post_id = id;
user_id = x.user_id.value;
reply = x.user_reply.value;
date = x.date.value;
time = x.time.value;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}else{
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
document.getElementById("div"+id).innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open('GET', 'reply.php?reply='+reply+'&post_id='+post_id+'&user_id='+user_id+'&time='+time+'&date='+date, true);
xmlhttp.send();
}
</script>
&#13;
最后,这是我点击回复按钮时在浏览器控制台中收到的错误
(index):121 Uncaught TypeError: Cannot read property 'value' of undefinedsendReply
@ (index):121onclick
@ VM161:211
&#13;
答案 0 :(得分:0)
这部分是问题所在:
x='document.form'+id;
post_id = id;
user_id = x.user_id.value;
在这里,您要创建一个包含字符串的变量x
,然后尝试访问它,就像它是一个对象一样。
相反,试试这个:
x = document['form' + id]