1
我被困在簡單的東西上。當我做一個Ajax請求,通過一些如何它沒有足夠的時間來分配給combonews
變量:延遲ajax成功,jQuery
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);
的時間?
UPDATE:
當我通過結合按鈕單擊事件運行,分配工作正常
------------------ ---------------------
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()函數。這適用於點擊,但在其他一些後果不能做(我的意思是不加載消息combonews)
感謝您
是它的工作很好,當我點擊,但我需要它來進行自動 – INgeek 2013-03-08 18:24:37
我說。如果你看着firebug,那麼AJAX查詢是否會在點擊時返回。基本上,ajax是否可以正常工作(減去實際數據的地方)。 – 2013-03-08 18:25:38
你應該使用'JSON.parse()',而不是'eval()'。 – SLaks 2013-03-08 18:26:56