ユーザーが自分の国を選択できるフォームがあり、選択した国に応じて、フォームのドロップダウン (選択) がその国の州/州のリストに変わります。ここまでは順調ですね。問題は、ドロップダウン選択フォームが CSS でスタイル設定されていることです。ページが最初にロードされると、すべてが完璧ですが、州/州のドロップダウンを変更する ajax スクリプトが呼び出されると、スタイルが設定されていない状態で返されるため、基本的にすべてのスタイルが失われます。これを回避する方法を知っている人はいますか?コードは正しくスタイル設定されています。何らかの理由で、ajax が返されたときにコードが実行されないだけです。
jqueryコードは次のとおりです。
function state_box(country, user_id)
{
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var url = relative_path + 'states.php';
var action = url + '?country_id=' + country.value;
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4)
{
var response = xmlHttp.responseText;
document.getElementById('stateBox').innerHTML = response;
}
};
xmlHttp.open("GET", action, true);
xmlHttp.send(null);
}
そして states.php の内容は、基本的にはドロップダウンを返すだけで、特別なことは何もありません:
$display_output = '<select class="mystyle" name="dropdown" id="dropdown"> ';
$display_output .= '<option value="" selected>Select a State</option> ';
while ($state_details = $this->fetch_array($sql_select_states))
{
$display_output .= '<option value="' . $state_details['id'] . '" ' . (($selected_value == $state_details['id']) ? 'selected' : ''). '>' . $state_details['s.name'] . '</option>';
}
$display_output .= '</select>';
$display_output = ($in_ajax) ? $display_output : '<div id="stateBox">' . $display_output . '</div>';
return $display_output;
基本的に唯一の問題は、CSS クラス「mystyle」が ajax によって返された後、ブラウザーでフォーマットされないことです。