Jquery通用结构化算法

时间:2011-11-16 16:34:48

标签: jquery

我正在尝试解决Jquery中的通用代码结构问题。

我有一个听众,当html列表框发生变化时会做一些事情,就像这样:

<script>
$("#sdate").change(function () {
    $.ajax({
        url: 'test.php',
        data: {
            ref: '<?php echo $_GET['ref']; ?>',
            fase1: $(this).val()
        },
        type: 'get',
        success: function (d) {
            $('.selector').html(d);
        }
    });
});
</script>

有时候列表框sdate可能不同,我的意思是,有时 sdate 可能是这样的:

<select id="sdate">
<option>option1</option>
<option>option2</option>
</select>

其他时间可能是这样的:

<select id="sdate">
<option fase2="some_value">option1</option>
<option fase2="some_value">option2</option>
</select>

根据参数fase1的可用性,我将通过ajax发送的GET变量将发生变化,例如,如果<option>option1</option> ajax调用将是:

 $.ajax({
        url: 'test.php',
        data: {
            ref: '<?php echo $_GET['ref']; ?>',
            fase1: $(this).val()
        },
        type: 'get',
        success: function (d) {
            $('.selector').html(d);
        }
    });

但如果列表框与<option fase2="some_value">option1</option>类似,则ajax调用必须如下:

  $.ajax({
        url: 'test.php',
        data: {
            ref: '<?php echo $_GET['ref']; ?>',
            fase1: THE_VALUE_FASE2_ON_THE_OPTION_PARAMETER
        },
        fase2: $(this).val()
    }, type: 'get',
    success: function (d) {
        $('.selector').html(d);
    }
    });

我在jquery非常新,所以这给我带来了一些问题,感谢您对如何编写脚本的任何方向!

2 个答案:

答案 0 :(得分:0)

为什么在发送之前不评估fase2或fase1属性?

$('#sdate').attr('fase1');类似,这会在jquery上返回属性fase1的值。

<script>
$("#sdate").change(function () {
    var fase2 = $(this).attr('fase2');
    var value = $(this).val();
    $.ajax({
        url: 'test.php',
        data: {
            ref: '<?php echo $_GET['ref']; ?>',
            fase1: fase2 == '' ? value : fase_2,
        },
        type: 'get',
        success: function (d) {
            $('.selector').html(d);
        }
    });
});
</script>

像这样的东西???

编辑:我认为现在好多了。

答案 1 :(得分:0)

也许:如果你们在cond 2中都需要fase1和fase2:

var data = {
    ref: '<?php echo $_GET['ref']; ?>',
};
if ( $(this).attr("fase2") ) {
    data.fase1 = $(this).attr("fase2");
    data.fase2 = $(this).val();
} else {
    data.fase1 = $(this).val();
}

然后在对象的数据变量referer中我们刚刚创建的数据变量

$.ajax({
    url: 'test.php',
    data: data,
    type: 'get',
    success: function (d) {
        $('.selector').html(d);
    }
});

如果关于fase1的问题是属性或值:

$.ajax({
    url: 'test.php',
    data: {
        ref: '<?php echo $_GET['ref']; ?>',
        fase1: $(this).attr('fase2') || $(this).val()
    },
    type: 'get',
    success: function (d) {
        $('.selector').html(d);
    }
});