1

ページの読み込み時にajaxを使用して動的に生成されるドロップダウンリストがあります。一方、デフォルトで選択される値を含むphp変数があります。ただし、Iamがこれを実行しようとすると、値が選択されません。コードは次のとおりです。

HTMLとPHP

<h1>Venue: Edit</h1>
<a href="/venue"><< Back to Venue List</a>
<br />
<form method="post" id="venueEdit" action="<?php echo URL;?>venue/editSave/<?php echo $this->venue['id']; ?>">
    <fieldset>
            <p>
                <label for="cvenue" class="main">Venue</label>
                <input id="cvenue" class="required" type="text" name="venue" value="<?php echo $this->venue['name']; ?>" />
            </p>
            <p>
                <label for="ccity" class="main">City</label>
                <input id="ccity" class="required" type="text" name="city" value="<?php echo $this->venue['city']; ?>" />
            </p>
            <p>
                <label for="ccountry" class="main">Country</label>
                    <select id="ccountry" class="required" name="country">
                        <option value="">-- Select Country --</option>
                    </select>

            </p>
            <p>
                <label class="main">&nbsp;</label><input type="submit" value="Save" />
            </p>
        </fieldset>   
</form>

JS:

function populateCountryDropDown(url){
    $.get(url, function(o) {
        for(var i = 0; i < o.length; i++){
            $('select[name="country"]').append('<option value="' + o[i].id + '">' + o[i].name + "</option>");
        }
    }, 'json');
}

$(document).ready(function(){
        populateCountryDropDown('<?php echo URL; ?>' + 'country/xhrGetCountryList');
        $('select[name="country"]').val('<?php echo $this->venue['countryid']; ?>');
        $("#venueEdit").validate();
    });

php値をアラートしようとしましたが、問題ありませんが、選択オプション値をアラートすると、その時点ではまだドロップダウンリストに表示されているため、常にnullになります。これを解決する方法がわかりません。皆さんの助けに感謝しますか?ありがとう。

4

2 に答える 2

2

コードを移動して値をコールバックに設定し、リターンによって AJAX 呼び出しが開始された後$.get()に設定されている値をトリガーする必要があります。

function populateCountryDropDown(url){
    $.get(url, function(o) {
        for(var i = 0; i < o.length; i++){
            $('select[name="country"]').append('<option value="' + o[i].id + '">' + o[i].name + "</option>");
        }
        $('select[name="country"]').val('<?php echo $this->venue['countryid']; ?>');
        $("#venueEdit").validate();
    }, 'json');
}

$(document).ready(function(){
        populateCountryDropDown('<?php echo URL; ?>' + 'country/xhrGetCountryList');
});
于 2012-04-05T04:51:11.430 に答える
-2

このコードは次のとおりです。

$('select[name="country"]').val('<?php echo $this->venue['countryid']; ?>');

次のように変更してみてください:

$('select[name="country"]').val('<?php echo $this->venue["countryid"]; ?>');  // Double quotes around countryid vs the single quote.
于 2012-04-05T04:51:45.130 に答える