2012-07-25 54 views
0

我使用PHP &原型JS內置的應用程序。我有兩個鏈接選擇框,它們構成了一個更大的表單的一部分。當用戶改變在第一個選擇框中的值的原型的Ajax更新請求被觸發的獲得的值的列表中的第二個選擇框以顯示:POST參數AJAX更新後失蹤,形成

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塊盒如(甚至可以看到這是通過螢火蟲返回):

<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

嘗試:

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} 
}); 
+0

感謝德克。也許我沒有正確地說明問題,阿賈克斯更新正確返回正確的HTML中的DIV即上述的選擇模塊更換,但是這是我後來張貼形式branch_id沒有形成柱的一部分,甚至通過它,如果我只是張貼表單而不改變任何東西。這是因爲如果後無法讀取更新的HTML,即使我可以看到它是通過螢火蟲在頁面上正確的。 – 2012-07-26 08:13:02

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> 

只要確保你的元素是表單元素。 接下來是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那裏。讓我知道這是否適合你。

+0

感謝 - 設法找到另一個工作,但它涉及頁面重新加載。當我幾分鐘後,我會嘗試你的修復,看看它是否有幫助。 – 2012-07-30 09:51:30