0

我有两个链接的选择框,其中第二个下拉列表根据第一个下拉列表的值填充,效果很好。我目前有一个 php 函数,可以在用户单击按钮时检索并显示选择框的值。现在我面临的挑战是因为他们必须单击按钮来显示他们选择的选项,页面会刷新,但我想要一种可以检索和显示所选选项的方式,这样用户就可以在不刷新页面的情况下看到他们选择的内容. 我知道这可以使用 ajax 来实现,但我是 ajax 新手,我在网上检查了很多类似的问题,但我不太明白如何做到这一点。对此的任何建议将不胜感激。请参阅下面我的 php 函数,该函数执行所选值的检索和显示

function OutputCategory() {
    if (isset($_POST['drop_2']) && ($_POST['btn_confirm']) && ($_POST['drop_1'])) {
        $drop2 = $_POST['drop_2'];
        $drop1 = $_POST['drop_1'];

        $cat_name = mysql_query(sprintf("SELECT subcategory_name FROM subcategory WHERE subcategory_id = '%s'", mysql_real_escape_string($drop2)));
        while ($cat_name1 = mysql_fetch_array($cat_name)) {
            $cat_name2 = $cat_name1['subcategory_name'];
        }

        $cat = mysql_query(sprintf("SELECT category_name FROM category WHERE category_id = '%s'", mysql_real_escape_string($drop1)));
        while ($cat1 = mysql_fetch_array($cat)) {
            $cat_2 = $cat1['category_name'];
        }
        echo "You selected Category:";
        echo $cat_2." >> ".$cat_name2;
    }
    elseif(isset($_POST['drop_1']) && ($_POST['btn_confirm'])) {
        $drop1 = $_POST['drop_1'];
        $cat = mysql_query(sprintf("SELECT category_name FROM category WHERE category_id = '%s'", mysql_real_escape_string($drop1)));
        while ($cat1 = mysql_fetch_array($cat)) {
            $cat_2 = $cat1['category_name'];

            echo "You selected Category:";
            echo $cat_2;
        }
    }
}​
4

1 回答 1

-2

您需要将 ajax 调用绑定到选择,如下所示:

$('#select1_id').on('change', function() {
  $.ajax({
    type: 'GET',
    data: {
      'select1_val': $(this).val()
    },
    url: 'some_page.php',
    success: function( data ) {
      $select2 = $('#select2_id');
      $select2.empty();      

      $(data.options).each(function(i,option){
        // append option to $select2
      });
    } 

  });
});

然后,在“some_page.php”上,是这样的:

if( $_GET['select1_val'] ) {

  // get the select 2 vals, put them into an $array
  json_encode(array('options' => $array )); exit;

}

...虽然这当然是一个非常简单的例子,但我相信你明白了

干杯,

于 2012-10-15T19:31:44.387 回答