PHP:使用$ _GET从javascript

时间:2019-03-17 03:03:44

标签: javascript php

我正在制作旅行套票网站,我想使用php中的GET,POST,REQUEST检索数据。但我收到一条错误消息说 “数组()否 注意:未定义的索引:“


JavaScript函数:

通过简单地将“ package”和“ person#”中的值相乘来计算总数


下面是我的代码

<script type="text/javascript">

function totalPrice(){

document.getElementById("total").value= "CAD "+ 
(document.getElementById("package").value * document.getElementById("person").value);}   
</script>

<!-- package selection -->

<form action="test.php" method="get">


<select id="package" onchange="totalPrice();" >
      <option value="2300">Wild West (Banff, Jasper)</option>
      <option value="3300">East Coast(St.Johns)</option>
      <option value="1300">Winery Tour(Kelowna, Penticton)</option>
      <option value="2600">Northern Light(Yellowknife)</option>
 </select>

 <select id="person" onchange="totalPrice();">
          <option value="1">1 person</option>
          <option value="2">2 persons</option>
          <option value="3">3 persons</option>
          <option value="4">4 persons</option>
          <option value="5">5 persons</option>
          <option value="6">6 persons</option>
          <option value="7">7 persons</option>
          <option value="8">8 persons</option>

  </select>
  <input type="submit">

  </form>
  <!-- total Amount -->
  <label class="form" >Total Amount</label>
  <input size =40 type="text" name="total" id="total" disabled>

“ test.php”

<h1>payment total</h1>

<?php

print_r($_GET);
if(!isset($_GET['total'])){
  echo "no";
}
echo $_GET['total'];
 ?>

2 个答案:

答案 0 :(得分:1)

要使字段“总计”包含在发送到test.php服务器的内容中,您需要将“总计”输入字段移到form标记内。表单标签之外的任何内容都不会被包含。

编辑添加示例:

<script type="text/javascript">

function totalPrice(){

document.getElementById("total").value= "CAD "+ 
(document.getElementById("package").value * document.getElementById("person").value);}   
</script>

<!-- package selection -->

<form action="test.php" method="get">


<select id="package" onchange="totalPrice();" >
      <option value="2300">Wild West (Banff, Jasper)</option>
      <option value="3300">East Coast(St.Johns)</option>
      <option value="1300">Winery Tour(Kelowna, Penticton)</option>
      <option value="2600">Northern Light(Yellowknife)</option>
 </select>

 <select id="person" onchange="totalPrice();">
          <option value="1">1 person</option>
          <option value="2">2 persons</option>
          <option value="3">3 persons</option>
          <option value="4">4 persons</option>
          <option value="5">5 persons</option>
          <option value="6">6 persons</option>
          <option value="7">7 persons</option>
          <option value="8">8 persons</option>

  </select>
  <input type="submit">

  <!-- total Amount -->
  <label class="form" >Total Amount</label>
  <input size =40 type="text" name="total" id="total" disabled>

  </form>

答案 1 :(得分:0)

您需要确保要提交的任何数据都在<form> </form>标记内。如果您将其保留,则数据将不会被传递...

例如,假设您有两个表单标签(A和B),都带有一个提交按钮。如果您从两个表单中都省略了<input size =40 type="text" name="total" id="total" disabled>,则当您在其中两个表单上按提交时,将在哪个表单中发送总数?

Definition<form>标签:

  

HTML元素表示包含的文档部分   用于将信息提交到Web服务器的交互式控件。 (此处是关键词)

我已将输入内容移到下面的正确位置:     

function totalPrice(){

document.getElementById("total").value= "CAD "+ 
(document.getElementById("package").value * document.getElementById("person").value);}   
</script>

<!-- package selection -->

<form action="test.php" method="get">


<select id="package" onchange="totalPrice();" >
      <option value="2300">Wild West (Banff, Jasper)</option>
      <option value="3300">East Coast(St.Johns)</option>
      <option value="1300">Winery Tour(Kelowna, Penticton)</option>
      <option value="2600">Northern Light(Yellowknife)</option>
 </select>

 <select id="person" onchange="totalPrice();">
          <option value="1">1 person</option>
          <option value="2">2 persons</option>
          <option value="3">3 persons</option>
          <option value="4">4 persons</option>
          <option value="5">5 persons</option>
          <option value="6">6 persons</option>
          <option value="7">7 persons</option>
          <option value="8">8 persons</option>

  </select>

  <!-- total Amount -->
  <label class="form" >Total Amount</label>
  <input size =40 type="text" name="total" id="total" disabled>

  <input type="submit">

  </form> <-- END OF FORM -->

此外,这是在PHP方面处理问题的一种更好的方法,因为尽管您可能正在检查是否设置了总计,但没有设置,但仍然会出错。

<?php

print_r($_GET);

if(isset($_GET['total'])){
  echo $_GET['total'];
} else {
  echo 'No total';
}
?>

编辑

您还需要使输入不为disabled,因为不会提交禁用的输入。 如果要使用户无法编辑输入,请更改:

<input size =40 type="text" name="total" id="total" disabled>

<input size =40 type="hidden" name="total" id="total">

这也将其从页面中隐藏。如果仍然希望它可见,则可以这样设置:

<input size =40 type="text" name="total" id="total" readonly="readonly">