簡単なことにこだわった。combonews
ajaxリクエストを行うと、変数に代入するのに十分な時間がないためです。
jQuery.ajax({
type: "POST",
url: "People.aspx/LoadComboNews",
data: "{\"id\":" + usrid + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
// Replace the div's content with the page method's return.
combonews = '';
setTimeout(function () { combonews = eval(msg.d); }, 500);
//combonews = eval(msg.d);
}
});
示されているようにsetTimeoutを追加しようとしましたが、それでもアラートを出したいときはcombonews
空です。警告msg.d
すると、常にデータの準備ができています。実行する時間を延長する方法はありcombonews = eval(msg.d);
ますか?
アップデート:
ボタンクリックイベントにバインドして実行すると、割り当ては正常に機能します
---------------------------------------
UPDATE2
function lcombo() {
jQuery('#combostart ~ option').remove();
//setTimeout((function () {
jQuery.ajax({
type: "POST",
url: "People.aspx/LoadComboNews",
data: "{\"id\":" + usrid + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
complete: function (msg) {
// Replace the div's content with the page method's return.
combonews = '';
//setTimeout(function () { combonews = eval(msg.d); }, 500);
combonews = JSON.parse(msg.d);
}
});
//combonews = eval(combonews);
//alert(combonews);
jQuery(".chzn-select").chosen();
jQuery(".chzn-select-deselect").chosen({ allow_single_deselect: true });
var str = "";
if (combonews.length > 0)
for (var i in combonews) {
str += "<option value='" + combonews[i][0] + "'>" + combonews[i][1] + "</option>";
}
jQuery("#combooptions").append(str);
jQuery("#combooptions").val(draftid);
jQuery("#combooptions").trigger("liszt:updated");
}
次に、lcombo()関数をロードします。これはクリックで機能しますが、他の結果には影響しません(つまり、メッセージをコンボにロードしません)
ありがとうございます