2

我正在尝试通过使用 jquery/ajax 脚本来获得一个下拉框来更改第二个下拉框。Firebug 显示 Jquery 正在运行,但我的脚本根本没有显示。

<script type="text/javascript">
        function ajaxfunction(parent)
        {
            $.ajax({
                url: '../functions/process.php?parent=' + parent;
                success: function(data) {
                    $("#sub").html(data);
                }
            });
        }
    </script>

process.php 只是一个 MySQL 查询(有效)

我的初始下拉框由 MySQL 查询填充

<select name="front-size" onchange="ajaxfunction(this.value)">
//Query
</select>

然后第二个下拉框就是

<select name = "front-finish" id="sub">
</select>

我该如何解决这个问题?

4

3 回答 3

0

在你的 process.php 中给出这样的

echo "<select name='front-finish' id='sub' onchange='ajaxfunction(this.value)'>";

像这样你需要通过ajax将“onchange”功能添加到新创建的选择框

或者您可以删除 onchange 函数并编写如下

$("select[name^='front-']").live('change',function(){
   //Do your ajax call here
});
于 2013-03-18T06:21:51.170 回答
0

调用内联函数一点都不好......因为 web 2.0 标准建议使用不显眼的 JS 而不是 onevent 属性......看看为什么在这里.. 其他事情......使用 ajax 的正确方法是使用类型和数据 ajax 选项在控制器中发送值..

<script type="text/javascript">
    $(function(){
    $('select[name="front-size"').change(function()
    {
        $.ajax({
            url: '../functions/process.php',
            type:'get',
            data:{'value' : $(this).val()}, 
            dataType:"html",   //<--- here this will take the response as html... 
            success: function(data) {
                $("#sub").html(data);
            }
        });
    });
 });
</script>

你的proces.php应该是..

 <?php
   //db query ...thn get the value u wanted.. 
   //loop through it..
   $optVal .= "<option value="someDbValue">some DDB values</option>";
   // end loop

   echo $optValue;exit;

更新

看起来你onchange="ajaxfunction(this.value)"在你的选择中仍然有这个删除它是不需要的,而且javascript中的ajaxfunction也是......

<select name="front-size" >    
                   //----^ here remove that
于 2013-03-18T06:25:38.380 回答
0

使用jQuery.on()它将允许我们在动态加载的内容上添加事件。

$('select[name^="front-"]').on('change',function(e){
    e.preventDefault();
    var value = $(this).val();
    ajaxfunction(value);
});

[name^="front-"]这将选择所有以 .开头的SELECT框。namefront-

于 2013-03-18T06:26:29.443 回答