【问题标题】:Pass dropdown options to PHP variable (without page refresh)将下拉选项传递给 PHP 变量(不刷新页面)
【发布时间】:2014-08-16 19:23:47
【问题描述】:

我正在尝试将下拉菜单的值传递给 PHP 变量 $anno,因此末尾的 print_r() 函数可以使用实际的 $coefficiente 变量(取决于 $anno)。

<select name="anno">
<option>1940</option>
<option>1941</option>
<option>1942</option>
</select>

<?php

$importo = "100";
$anno = $_POST["anno"];

if ( $anno == "1940" ) { $coefficiente = "10"; } ;
if ( $anno == "1941" ) { $coefficiente = "20"; } ;
if ( $anno == "1942" ) { $coefficiente = "30"; } ;

print_r(($importo*$coefficiente)/1936.27); echo '€';

?>

这可以“AJAXified”吗?

此时,当我选择下拉选项时,print_r 函数没有更新。我需要提交按钮吗?

【问题讨论】:

  • 当然可以,您只需要下拉菜单上的 onChange 事件的处理程序(您将把您的 ajax 请求放在那里)
  • 我尝试了这个 jQuery 函数,但没有发现任何区别.. :D pastebin.com/ecuvnNaP

标签: php ajax post input


【解决方案1】:

如果你想在同一页面计算你的公式,不要使用 PHP 使用 Javascript

<select name="anno">
  <option>1940</option>
  <option>1941</option>
  <option>1942</option>
</select>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
 $(document).ready(function() {
    // We bind our AJAX handler to the onChange event of the select element
    $("select[name='anno']").on('change', function(e) {
      var importo = "100";
      var anno = $(this).val();
      var coef = "";
      if (anno == 1940) { coef = 10; }
      if (anno == 1941) { coef = 20; }
      if (anno == 1942) { coef = 30; }

      alert(importo*coef/1936.27 + "€");
    })
});

对于 PHP 处理,使用 AJAX(警告我无法测试!)

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
 $(document).ready(function() {
    // We bind our AJAX handler to the onChange event of the select element
    $("select[name='anno']").on('change', function(e) {
            $.ajax({
                type: "POST",
                url : "your_php_script.php",
                data: { anno: $(this).val() },
            })
              .done(function(data) {
                alert(data); 
              })
              .fail(function(jqXHR, textStatus, errorThrown) {
                alert("Something went wrong!\n" + errorThrown);
              });
    })
});

【讨论】:

  • 如果脚本在同一页面上,我应该在url : 中输入什么?
  • 它不应该在同一个页面上,不是吗?如果它必须在同一个页面上,只需输入php脚本的名称(如果您的页面名为page.php,只需输入page.php)。但我强烈建议您将其放在另一个脚本(或您所称的页面)上。如果它是相同的,即使用户尚未做出任何选择,您的 PHP 代码也会被执行......(您可以更改在您的 PHP 代码之前放置 if (isset($_POST['anno']) 但恕我直言,这是 ugly :-)
  • 哦,如果你想在同一个页面上,那么你可以在 JS 中做所有事情,请参阅编辑后的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 2012-01-31
  • 2016-03-13
  • 2020-06-06
  • 2020-04-02
相关资源
最近更新 更多