我很想将一个var值从javaScript传递到php,我收到了这个错误 未定义的索引:C语言中的postmarca: 。 目标是避免php返回marcaID的值,这是主键并返回定义为“marca”的选择名称,该名称是从DB获得的
我做错了什么?
<?php
$marca = $_POST['postmarca'];
echo "$marca";
?>
<html>
<head>
<script type= "text/javascript" src="jquery-3.1.1.min.js"></script>
</head>
<body>
<div id="reg">
<form>
<select name="marca" class="marca" id="marca">
<option selected="selected">--Select MArca--</option>
<?php
$stmt = $db->prepare("SELECT * FROM tabl_marca");
$stmt->execute();
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<option value="<?php echo $row['marcaID']; ?>">
<?php echo $row['marcas']; ?></option>
<?php
}
?>
</select>
<input type="button" value="submit" onclick="post();">
</form>
</div>
</body>
JAVASCRIPT
<script type= "text/javascript">
function submit()
{
var marca= $('#marca').val();
$.post('tester.php', {postmarca:marca}, function(data)
{
$('#reg').html(data);
});
}
</script>
答案 0 :(得分:2)
将数据从脚本发布到当前脚本后,将设置变量$_POST['postmarca']
。当您第一次运行脚本时,'postmarca'
尚未添加到全局变量$_POST
,因为假设当前脚本为tester.php
,脚本尚未发布数据。在使用之前尝试添加一个条件来检查变量是否可用,即:
if(isset($_POST['postmarca'])){
$marca = $_POST['postmarca'];
echo $marca;
}
您可能还想将onclick="post();"
更改为onclick="submit();"
答案 1 :(得分:1)
首次加载页面时,您尝试获取POST值postmarca
,但未提交任何表单。
您应该有条件查看是否已提交表单,如下所示:
if (!empty($_POST['postmarca'])) {
echo $_POST['postmarca'];
}
我假设您发布的文件名为tester.php
。
在这种情况下,您可能会遇到问题,因为Javascript中的$.post
是一个AJAX调用,它将包含您的所有tester.php
文件,并且您将有一些代码开始这里。
您可以将我编写的代码放在一个新文件中,按照示例submit.php
调用,然后避免代码启动。