如何在下拉列表更改事件上调用AJAX请求?

时间:2010-08-07 04:56:04

标签: php jquery ajax json drop-down-menu

的index.php

<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript" src="ajax.js"></script>

<a href='one.php' class='ajax'>One</a>
<a href='two.php' class='ajax'>Two</a>

<div id="workspace">workspace</div>

one.php

$arr = array ( "workspace" => "One" );
echo json_encode( $arr );

two.php

$arr = array( 'workspace' => "Two" );
echo json_encode( $arr );

ajax.js

jQuery(document).ready(function(){
    jQuery('.ajax').live('click', function(event) {
        event.preventDefault();
        // load the href attribute of the link that was clicked
        jQuery.getJSON(this.href, function(snippets) {
            for(var id in snippets) {
                // updated to deal with any type of HTML
                jQuery('#' + id).html(snippets[id]);
            }
        });
    });
});

以上代码工作正常。当我单击链接'One'时,字符串'One'被加载到工作区DIV中,当我单击链接'Two'时,字符串'Two'被加载到工作区DIV中。

问题:

现在我想使用下拉列表在工作区DIV中加载one.php和two.php而不是index.php中的链接。当我使用链接时,我在链接属性中使用class ='ajax'但是如何在下拉更改事件中调用ajax请求?

由于

2 个答案:

答案 0 :(得分:3)

更改您的代码:

jQuery('#dropdown_id').live('change', function(event) {
    jQuery.getJSON($(this).val(), function(snippets) {
        for(var id in snippets) {
            // updated to deal with any type of HTML
            jQuery('#' + id).html(snippets[id]);
        }
    });
});

您的下拉列表应如下所示:

<select id="dropdown_id">
  <option value="one.php">One</option>
  <option value="two.php">Two</option>
</select>

答案 1 :(得分:0)

在下拉列表中将href指定为列表项值。更改下拉列表,进行ajax调用。

类名“ajax”仅供参考(如果您想要处理超过一个元素的事件,则非常有用)。