我正在尝试通过使用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>
我该如何解决这个问题?
答案 0 :(得分:1)
调用内联函数并不好......因为Web 2.0标准建议使用不显眼的JS而不是一个属性....查看为什么here .. 其他thigs ..使用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;
<强>更新强>
看起来你的select select中仍然有onchange="ajaxfunction(this.value)"
这个不需要它,而javascript中的ajax函数也是......
<select name="front-size" >
//----^ here remove that
答案 1 :(得分: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
});
答案 2 :(得分:0)
使用jQuery.on()
,我们可以在动态加载的内容上添加事件。
$('select[name^="front-"]').on('change',function(e){
e.preventDefault();
var value = $(this).val();
ajaxfunction(value);
});
[name^="front-"]
这将选择所有SELECT
框name
以front-
开头。