我有一个使用PHP& amp;原型JS。我有两个链式选择框,形成一个更大的形式的一部分。当用户更改第一个选择框中的值时,会触发Prototype Ajax Updater请求以获取要在第二个选择框中显示的值列表:
landlordId = $F('landlord_id');
branchId = $F('branch_id');
new Ajax.Updater('landlord_branches_div', baseUrl+"/landlord/getLandlordBranches", {
method:'post', postBody:'landlord_id='+landlordId +'&branch_id='+ branchId,
});
这将返回填充到第二个选择框中的HTML块,例如(甚至可以看到这是通过Firebug返回的内容):
<select name="branch_id" id="branch_id" >
<option value="all" selected="selected">All Branches</option>
<option value="99" selected>HORDEN</option>
</select>
然而,当在上面的ajax请求之后提交表单(通过常规表单提交)时,帖子中缺少branch_id(在第二个选择框中设置)。如果刚刚提交的初始页面未在第二个选择框上触发任何ajax更新,则它出现在帖子确定中。
具有讽刺意味的是,它在IE中运行正常,但在Chrome或Firefox中无效。
如果有人能够对此有所了解,我将不胜感激。
提前致谢。
答案 0 :(得分:0)
尝试:
landlordId = $F('landlord_id');
branchId = $F('branch_id');
new Ajax.Updater('landlord_branches_div', baseUrl+"/landlord/getLandlordBranches", {
method:'post',
parameters:{ landlord_id: landlordId, branch_id: branchId}
});
答案 1 :(得分:0)
如果我没有弄错,那么你有2个选择框,第二个选择框选项将由ajax更新程序填充,对吧?试试这个:
这是html结构(你的可能与此不同):
<form id="form_id">
<div id="landlord_div">
<select id="landlord_id" name="landlord_id" onchange="ajaxcall()">
<option value=1></option>
<option value=2></option>
</select>
</div>
<div id="landlord_branches_div">
</div>
</form>
确保您的元素位于Form元素下。 接下来是ajax更新程序脚本:
<script type="text/javascript">
var ajaxcall = function() {
new Ajax.updater('landlord_branches_div', 'your_ajax_url', {
method:'post',
parameters:'landlord_id='+$F('landlord_id'),
});
}
</script>
由于此ajax调用用于显示第二个选择框(分支选择器),因此您无需在那里发布branch_id。如果这对您有用,请告诉我。