0

网站在这里

为什么代码适用于$('#club').change(function(event)但不适用于$(document).ready(function()?功能是相同的$.ajax,但前者根本什么都不做。

<script type="text/javascript">

    $(document).ready(function() {
        $.ajax({
            type: "post",
            url: "eventinfo.php",
            data:  $(this).serialize(),
            success: function(data) {
                $('#right_inside').html('<h2>' + $('#club').val() + '<span style="font-size: 14px"> (' + data[0].day + ')</h2><p>Entry: ' + data[0].entry + '</p><p>Queue jump: ' + data[0].queuejump + '</p><p>Guestlist closes at ' + data[0].closing + '</p>');
                },
            dataType: "json"
        });
    });

    $('#club').change(function(event) {
        $.ajax({
            type: "post",
            url: "eventinfo.php",
            data:  $(this).serialize(),
            success: function(data) {
                $('#right_inside').html('<h2>' + $('#club').val() + '<span style="font-size: 14px"> (' + data[0].day + ')</h2><p>Entry: ' + data[0].entry + '</p><p>Queue jump: ' + data[0].queuejump + '</p><p>Guestlist closes at ' + data[0].closing + '</p>');
                },
            dataType: "json"
        });

    });

</script>
4

3 回答 3

4

提出请求。这很容易通过检查 Chrome 开发人员工具中的网络选项卡来验证。它返回一个空数组,使得data = []. 所以data[0].day抛出一个错误并且该错误没有被捕获。

两个代码块之间的区别在于变量中包含的内容this。在第一个中,它是一个 jQuery 对象,其中包含您的document. 在第二个中,它是一个包含<select>id 元素的 jquery 对象club。由于您想序列化相同的元素,您$(document).ready所要做的就是更改$(this)$(#club).

于 2012-06-14T00:38:19.597 回答
2

您希望$(this)在“就绪”处理程序中引用什么?在“更改”处理程序中,就是那个“#club”元素。在“就绪”处理程序中,它可能是无用的。

而不是$(this).serialize()我认为你想要$('#club').serialize()在“准备好的”处理程序中。

于 2012-06-14T00:37:11.110 回答
1

您的问题出在您的 HTML 代码中。

<select id="club" class="dropdown" name="club">
    <option id="Let" lo'="" lola="" @="" disco="" kill="" s="">Let's Kill Disco @ Lola Lo</option>
    <option id="Fuzzy Logic @ The Place">Fuzzy Logic @ The Place</option>
    <option id="BOOM! @ The Place">BOOM! @ The Place</option>
    <option id="Fuzzy Logic @ Ballare">Fuzzy Logic @ Ballare</option>
    <option id="Jelly Baby @ Ballare">Jelly Baby @ Ballare</option>
    <option id="Fiesta @ Fez">Fiesta @ Fez</option>
</select>

看第一个条目。不行,因为id不存在,标签都乱了。确保在将事件添加到列表时转义引号。当您这样做时,您的 jQuery$.ajax请求应该可以正常工作。

于 2012-06-14T00:54:45.127 回答