少なくとも私はそれが起こっていると思います。別の .js ファイルに存在する関数を呼び出す .js ファイルにコードがあります。この関数は、1 つが選択されたラジオ ボタンのリストを作成して返す PHP ページへの ajax 呼び出しを行います。関数が戻ると、選択したラジオ ボタンの値を php ページに渡し、いくつかのリストを生成するコードが実行されます (再び ajax 経由)。ユーザーが選択したラジオ ボタンを変更するたびに、リストが更新されます。これはクリックして選択すると機能しますが、ページが読み込まれると適切なラジオ ボタンが選択されますが、選択したラジオ ボタンをキャプチャするコードは未定義を返します。関数呼び出しの直後にアラートを配置すると、正しく機能します。これは、物事が順不同で実行されていると私に信じさせます。
私が以前これを回避した方法は、関数内の最初の関数呼び出しの後にコードを配置し、最初の関数の最後でその関数を呼び出すことでした。ただし、これは、なぜこれが起こっているのかを理解するのに役立ちません。コードは次のとおりです。
最初のファイル:
$(document).on("pageinit","#add_page",function(){
restore_addreg_page();
//alert('function finished');
var selected_group = $('#group :checked').val();
}
2 番目のファイル:
function restore_addreg_page(){
get_major_groups();
...more code
}
function get_major_groups(){
$.ajax({
url: 'PHP_Scripts/get_major_groups.php',
dataType: 'html',
success: function(data){
$('#major_groups').empty();
$('#major_groups').append(data);
$('#major_groups').trigger('create');
$('input:radio').each(function(){
if($(this).attr("id") == 'major_group0'){
$(this).prop("checked",true).checkboxradio('refresh');
}
});
},
error: function(data){
alert('Query Error');
}
});
}
アラートのコメントを外すと、すべてが正しく機能します。それ以外の場合、selected_group は定義されておらず、その後の呼び出しはその失敗に依存します。