将Var从JavaScript传递给php,错误:

时间:2017-05-29 08:37:42

标签: javascript php

我很想将一个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>

2 个答案:

答案 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调用,然后避免代码启动。