繁体   English   中英

javascript和PHP变量传递

[英]javascript and PHP variable passing

我有两个选择框,第二个选择框的值取决于第一个选择框。 因此,基本上我想做的是,当用户在第一个选择框上进行选择后,它将把第一个选择框的值存储为变量。 然后,它将基于第一个选定的值查询我的数据库以填充第二个选择框。 问题是,如何将第一个选择框中的变量传递给PHP? 我读过其他文章,人们说这是不可能的,但是如果是这样,人们将如何做到这一点? AJAX?

如果我理解正确,那么是的,使用AJAX实际上是您的唯一选择。

实际上,您可以使用AJAX调用类似“ getSelectionData.php?data =” + select1.value之类的方法,该方法将根据第一个选择框中的选择返回一个JSON数据数组。 然后,您解析数据并将其输入到第二个选择框中。

onchange事件侦听器添加到第一个选择框:

document.getElementById("select1").addEventListener("change", function(ev){
   var yourstoredvariable = this.value;
   someFunctionThatCallsAjax(yourstoredvariable);
}, true);

您将在第一个<select>上发生一个onchange事件,该事件将使用Ajax查询具有选定<option>值的服务器,该值将返回<option>元素,并使用该元素填充第二个<select>元素。

问题是,如何将第一个选择框中的变量传递给PHP?

我在这里没问题。
通常,使用GET方法的普通html表单。
有什么大不了的?

如果我认为正确,则说明您使用的是Jquery。 因此,您可以这样做:

$('#idOfSelectBox1').change(function(){
jQuery.ajax({
    type: "GET",
    url:"yourdomain.com/script.php",
    data:"selectBox:'"+$('#idOfSelectBox1').val()+"'",
    success:function(result){
        //do smth with the returned data
    }
});
});

在script.php中做您的魔术,并回显您想要传递回js的内容

我假设您有一个“国家/城市”下拉列表,您可以通过两种方式做到这一点,好的AJAX方法和坏的方法(刷新更改页面),我将在jQuery中描述好的方法,或者至少看到它很好。

这是客户端(即客户端)代码:

<select id="country">
  <option value="1">Canada</option>
  <option value="2">UK</option>
</select>
<select id="city" disabled="disabled"></select>
<script type="text/javascript">
  $('#country').change(function(){
      $('#city').load('/ajax-city.php', {id: $(this).val()});
  });
</script>

这是ajax-city.php代码(服务器):

<?php
$countryId = $_REQUEST['id'];
$cities = array(); // Get it from db, using mysql_query or anything you want to use
foreach($cities as $city) {
  echo "<option id=\"{$city['id']}\">{$city['name']}</option>";
}

PS。 您将需要在HTML代码中包含jQuery,并且当然将这两个文件放在同一目录中(或更改$ .load路径)。

这个特定的代码未经测试,我已经编写了。 但这通常对我来说很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM