我想更新一个表单,更确切地说,我希望显示一个额外的滚动菜单,具体取决于用户在第一个滚动菜单中的选择。
我有一个页面,mypage.php页面上有一个表单。这里是 :
<form method="post" action="wedontcare.php" enctype="multipart/form-data">
<label for="base">3 - Select a DB </label><br />
<?php
include 'functions.php';
offers_choice_DB();
if (isset($_POST['base_name_choice'])){
offers_choice_table($_POST['base_name_choice']);
}
我有一个单独的文件“ functions.php”,在其中声明了我在此处使用的所有功能。offer_choice_DB()显示一个滚动菜单,我可以在其中选择一个数据库(实际上,此函数执行MySQL查询并在滚动菜单中回显结果)。如果用户选择数据库,则$ _POST ['base_name_choice']存在。确实如此,因为当我仅使用PHP / HTML时,一切都很好。
我的目的是允许用户选择一个数据库,然后为该数据库显示第二个滚动菜单,该菜单显示该数据库中的一些表。仅当设置了POST值时,才会显示此滚动菜单。offer_choice_table($ _ POST ['base_name_choice'])函数将此值用作参数,然后回显包含表的滚动菜单的HTML。我们来了 !
哦,提交按钮在这里并不重要,因为我想在用户单击提交按钮之前显示第二个滚动菜单,所以我们只是忽略目标页面,好吗?
以前,一切都还好:我使用了测试,条件(isset ...),但它不是动态的,我不得不调用其他页面,等等。现在,正如您所猜到的那样,现在我希望在用户选择数据库后立即使用jQuery刷新mypage.php,以便出现一个额外的菜单。
我开始听滚动菜单中的更改,但是随后我不知道如何使用包含所选数据库的POST参数刷新页面。无论如何,这是我的代码:
<script type="text/javascript">
$( '#base_name_choice' ).change(function() {
var val = $(this).val(); //here I retrieve the DB name
alert( val ); //I notify myself to check the value : it works
$.ajax({
type: 'POST', //I could have chosen $.post...
data: 'base_name_choice='+val, //I try to set the value properly
datatype: 'html', //we handle HTML, isn't it ?
success: function(){
alert( "call ok" ); //displays if the call is made
//and here...???? I don't know whatto do
}
})
});
</script>
在这里...任何帮助将不胜感激!谢谢 :)
问候
这里的问题是您的页面首先呈现(html + php预处理)。这意味着一旦页面被渲染,您将无法进行直接的php方法调用,例如offers_choice_table
或更改$_POST
参数。
通常,通过从JavaScript到PHP脚本/方法进行AJAX调用,然后根据用户选择的参数生成第二个菜单。
因此,您不需要这部分:
if (isset($_POST['base_name_choice'])){
offers_choice_table($_POST['base_name_choice']);
}
因为您将通过ajax调用来调用“ offers_choice_table”方法。
您将ajax调用到一个网址,该网址将返回第二个菜单
$.ajax({
type: "GET",
url: "generate_second_menu.php",
data: { base_name_choice: val},
success: function(data){
alert( "call ok" ); //displays if the call is made
// here you can append the data that is returned from your php script which generates the second menu
$('form').append(data);
}
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句