簡體   English   中英

AJAX響應后重新選擇選項值

[英]Re-select option value after AJAX response

我有一個使用PHP,AJAX和jQuery構建的非常簡單的表單。 該表單包含一個從數據庫中填充的現有人員的選擇框。 下方是常用的聯系信息(地址,城市,電話等)。加載頁面時,除了包含人員的選擇框之外,該表單為空。

基本思想是,當用戶選擇一個人時,應將該人的聯系信息填充到表單中。 該表單顯示為模式窗口,所以我不希望頁面刷新,因此我向服務器發送了AJAX請求,並傳遞了唯一ID,服務器依次以該人的JSON編碼的PHP數組作為響應聯系信息。 我正在獲取這些信息並填寫表格。

除應放入選擇框(例如,州)的數據外,所有這些工作均按我的需要進行。 我已成功檢索正確的狀態值,並已驗證該值與select中的選項匹配,但是我無法獲取它來更改select框中的所選值。

這是我的代碼的重點:

<!-- abridged generated HTML -->
<select name="PersonID" id="PersonID">
    <option value="1">Mike</option>
    <option value="2">Jim</option>
    <!-- etc... -->
</select>

<input type="text" id="City" />

<select name="AttState" class="selectpicker" id="AttState">
    <option>State</option>
    <option value="AL">Alabama</option>
    <option value="AK">Alaska</option>
    <!--And so on... -->
</select>

<!-- etc...  -->

然后是Javascript ...

$(document).ready(function() {
    // This will pre-select when the form is initially loaded
    var selState = "TX";

    $("#PersonID").on('change', function(e) {
        personId = $("#PersonID").val();

        $.getJSON('GetPersonInfo.php?q=' + personId, function(data) {
            $.each(data, function(key, val) {
                $("#City").val(val.City);
                selState = val(val.State);
                // Plus all of the others...
        });
    });

    $("AttState").val(selState);
});

最初加載表單時,該州已被預選到德克薩斯州; 但是,當選定人員並且selState更改(通過警報驗證)時,不會將其設置為正確的值。 我已經閱讀了一些有關確保JavaScript代碼位於$(document).ready(function()函數內部$(document).ready(function() ,所以我懷疑AJAX調用不會重新觸發該函數。使它工作。

您應該放置此代碼$("AttState").val(selState); 在AJAX請求的內部成功回調中,如下所示:

$.getJSON('GetPersonInfo.php?q=' + personId, function(data) {
    $.each(data, function(key, val) {
       $("#City").val(val.City);
       selState = val(val.State);
       // Plus all of the others...

    });
    // its depend on your code whether inside .each() or not
    $("#AttState").val(selState);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM