2012-05-24 75 views
0

如何运行PHP查询,该查询只在从选择下拉列表中选择一个选项时运行,而且每次选择不同选项时都会刷新哪个选项?根据选择框中的选择显示文本

例如,这里是HTML:

<html> 
<head> 
<script type="text/javascript" src="/hr/includes/jui/js/jquery-ui-1.8.20.min.js"</script> 
<script> 
$(document).ready(function() { 
    $('#select_box_1').change(function() { 
     if($(this).val() != '') 
     $.ajax({ 
      type: 'get', 
      url: 'balance1.php', 
      data: 'value' + $(this).val() , 
      success: function(data) { 
       $("#result-div").html(data); 
      } 
     }); 
    } 
    }); 
}); 
</script> 
</head> 

<body> 

<form name="form" id="form" method="post" action="validate.php"> 

<div id="select_box_1"> 
<select name="drop_down"> 
<option value="">Please choose</option> 
<option value="1">John</option> 
<option value="2">Bob</option> 
<option value="3">Mike</option> 
</select> 
</div> 

<div id="result-div"> 

</div> 

<input type="submit"> 

</form> 

</body> 

</html> 

balance1.php

<?php 
print "GET Value:".$_GET['value']; 
?> 

我想运行取决于选择的值下方的选择框查询 - 例如当,没有任何选择没有查询运行。如果用户从列表中选择John,则查询运行id = 1并显示John的结果。如果用户选择Bob,那么查询应该在id = 2等地方再次运行?

+1

使用AJAX(例如'.ajax()'或'.get()')。 – dezso

回答

1

这是工作:

[...] 
<select name="drop_down" id="sel_something"> 
[...] 

$('#sel_something').change(function() { 
    if($(this).val() != '') { 
     $.ajax({ 
      type: 'get', 
      url: 'someurl', 
      data: { 'value' : $(this).val() } , 
      success: function(data) { 
       // do your stuff 
      } 
     }); 
    } 
}); 

我给一个id到选择和修改的数据线(和增加了一些语法更正)。

+0

完美,谢谢 – bhttoan

+0

@Jason - 你能接受这个答案吗? – dezso

0

尝试这样:

$("#select_box_1").change(function(){ 

    if ($(this).val() != "") { 

     $.ajax({ 
     type: "POST", 
     url: "foo.php", 
     data: "id=" + $("#select_box_1").val(), 
     success: function(msg){ 
      $("#result").text(msg); 
     } 
     }); 

    } 

}); 
+0

因为'$(this).val()'实际上持有DOM,所以在if条件下你可以像这样做'if($(this).val())'。问候 – jugnu

+0

啊,我错过了。我更新了答案。谢谢。 – woz

+0

我也是如此:-) .. – jugnu

1

我建议你使用jquery.ajax,这是方式更强大的比你想象的队友!下面是示例代码,使其工作

$('#select_box_1').change(function() { 
    if($(this).val() != '') 
    $.ajax({ 
     type: 'get', 
     url: 'URL To Your PHP Script', 
     data: 'value' + $(this).val() , 
     success: function(data) { 
      $("#result-div").html(data); 
     } 
    }); 
} 
}); 

编辑:$_GET['value']会在你的PHP脚本保存价值,你可以使用该值查询数据库,你的结果或输出返回Ajax调用,然后你可以只需在你的html视图中填充数据

+0

谢谢你 - 在由url调用的PHP脚本中,我如何从选择框访问值?即当选择John时“从id = 1的数据库中选择姓名”,或者当Bob被选择时“从数据库中选择id = 2的姓名”? – bhttoan

+0

我已编辑答案。谢谢 – jugnu

+0

现在不做任何事情:(编辑之前,它显示包含的PHP文件的内容,但没有通过价值,所以我不能做一个选择,但现在当我从下拉选择一个名字没有任何反应不幸的是,当我删除if语句时,它“起作用”,因为它显示了php文件的内容,所以看起来select中的选项值没有被拾取 – bhttoan

0

如果你每次重新加载页面的值都在下拉列表中变化,那么你可以在你的SELECT标签中使用onchange属性。

更改值时重新加载页面,并在URL中设置GET变量。如果这个GET变量是NULL,那么不要处理PHP代码... else进程。

+0

我不是每次都重新加载页面 - 唯一会改变的是在选择框中的值直到表单被提交 – bhttoan

+0

是的,我知道。我只是问你是否可以重新加载页面。 当下拉列表中的值更改“onchange”属性中的重载功能时,将导致页面重新加载并且php脚本再次处理。 我想要在没有页面重新加载的情况下执行此操作,那么您始终可以使用Ajax。 –

相关问题