0

我有一个使用 PHP & Prototype 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 更新,则它出现在帖子 OK 中。

具有讽刺意味的是,它在 IE 中运行良好,但在 Chrome 或 Firefox 中无法运行。

如果有人能对此有所了解,将不胜感激。

提前致谢。

4

2 回答 2

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}
});
于 2012-07-25T18:07:20.157 回答
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。让我知道这是否适合您。

于 2012-07-30T08:28:56.117 回答