gpt4 book ai didi

php - javascript无法从HTML输入标签分配隐藏的输入元素

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:23 25 4
gpt4 key购买 nike

我正在尝试从我拥有的表单中获取隐藏的输入值。除了 HIDDEN 元素之外,表单正确地传递了所有元素。我知道它们已声明,因为如果我在页面上选择“查看源代码”,它会显示正确的值(基本上是用户凭据)。

<form name="addExperienceForm" id="addExperienceForm" style="display:none;">
Title:<input type="text" name="title" id="title" />
From:<input type="text" name="startDate" id="startDate" />
To:<input type="text" name="endDate" id="endDate" />
Description:<textarea type="message" name="description" id="description"></textarea>
<input type="button" value="Submit" onclick="addUserExp()"/>
<input type="hidden" value="<?=$_SESSION['userID']?>" id="userID" />
<input type="hidden" value="<?=$_SESSION['email']?>" id="email" />

function addUserExp(){

//get info
var title = document.getElementById('title').value;
var startDate = document.getElementById('startDate').value;
var endDate = document.getElementById('endDate').value;
var userID = document.getElementById('userID').value;
var email = document.getElementById('email').value;
var description = document.getElementById('description').value;

//construct POST string with name value pair
var str = "title="+title+"start="+startDate+"end="+endDate+"userID="+userID+"email="+email+"desc="+description;

//establish XMLHTTP object
var req = getXMLHTTP();

if(req){

req.onreadystatechange = function(){
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('addNewExp').innerHTML=req.responseText;


} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
}
req.open("post", "addExperience.php", true);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send(str);
}

PHP

   <?php


$title = $_POST['title'];
$startDate = $_POST['start'];
$endDate = $_POST['end'];
$userID = $_POST['userID'];
$email = $_POST['email'];
$description = $_POST['desc'];

$sql = "INSERT INTO `user_experience`(`user_id`, `email`, `experience_title`, `experience_desc`, `start_date`, `end_date`)
VALUES ('$userID', '$email', '$title', '$startDate', '$endDate', '$description')";

echo $sql;

?>

我正在回显 MYSQL 语句,因此您可以看到字段没有被填充。在表单中输入数据时,上面的输出会产生以下内容:

INSERT INTO `user_experience`(`user_id`, `email`, `experience_title`, `experience_desc`, `start_date`, `end_date`) VALUES ('', '', 'test', 'Feb-2013', 'May-2013', 'test') 

最佳答案

从一开始我就可以看出一些错误。

(1) <type="text" name="endDate" id="endDate" />

我猜这应该是 <input type="text" name="endDate" id="endDate" /> .

(2) 您的输入没有name属性。 id属性非常适合样式化和收集值。然而,只有name属性由执行提交的表单识别。

(3) 你没有method属性在您的表单上。默认情况下,浏览器将使用 GET .然而你期待的是POST .要么改变 PHP使用 $_GET而不是 $_POST或者(更好的选择)为表格提供 method属性。

需要注意的几件事(以及我的一些小毛病):

(1) 指定 method 总是一个好主意的形式属性。浏览器应默认为 GET但只是为了让任何可能跟随您的脚步的人清楚,如果能清楚地看到就更好了。

(2) 请,请,请不要使用 PHP <?短标签。一是不清楚,二是不支持所有 PHP 安装,因为它基于 PHP .ini文件设置和三个它只是你必须添加的三个字符。我们不要偷懒。

希望这对您有所帮助。

关于php - javascript无法从HTML输入标签分配隐藏的输入元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14690957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com