我有一个小问题。我正在使用以下代码打开 jQuery 对话框:
$('#dialog').html('<img src="img/ajax-loader.gif" width="100" height="100" />');
$('#dialog').dialog({
autoOpen: true,
closeOnEscape: true,
modal: true,
position: ['center', 'center'],
title: _title,
autoResize:true,
width: 'auto',
buttons: {
"Ok": function() {
$( this ).dialog( "close" );
}
}
}).load(url, function(data) {
var arr=$.parseJSON(data);
console.log('Rez' + arr['result']);
console.log('result_msg' + arr['result_msg']);
$.each(arr, function (index, value) {
if ($.type(value) === 'object')
{
console.log('rid: '+ value['rid']);
console.log('rnos: '+ value['rnos']);
}
});
$(this).dialog("option", "position", ['center', 'center'] );
});
如果我要获取 html,一切都很好。但是,如果我获取 json,那么我如何格式化它并在#dialog div 中显示给用户?
如果我在#dialog 打开后使用 ajax 调用,#dialog 内容不会改变。有没有办法为load
事件添加自定义成功回调?
如果我先加载所有内容然后打开对话框,它不会位于屏幕中心。
如果我运行此代码:
$('#dialog').html('<img src="img/ajax-loader.gif" width="100" height="100" />');
$('#dialog').dialog({
autoOpen: true,
closeOnEscape: true,
modal: true,
position: ['center', 'center'],
title: _title,
autoResize:true,
width: 'auto',
buttons: {
"Ok": function() {
$( this ).dialog( "close" );
}
}
});
$.ajax({
dataType : 'json',
type: "GET",
url: url,
success: function(server_response){
console.log(server_response);
$('#dialog').html('vv'); // <---- even this doesn't shows
switch(server_response.result)
{
case 'choose':
var linki = '';
$.each(server_response, function (index, value) {
if ($.type(value) === 'object')
{
linki += '<a href="javascript:;">'+ value['rnos'] +'</a>';
//console.log('rid: '+ value['rid']);
//console.log('rnos: '+ value['rnos']);
}
});
console.log('Loading HTML: ' + linki);
$('#dialog').html(linki);
break;
default: $('#dialog').html(server_response.result_msg);
}
$('#dialog').dialog("option", "position", ['center', 'center'] );
}
});
然后#dialog 内容不会改变。
=== 编辑 ===
这是完成我需要的修改load
事件,但我不确定这是否是好方法。
$('#dialog').dialog({...}).load(url, function(data) {
var arr=$.parseJSON(data);
$(this).html('<img src="img/ajax-loader.gif" width="100" height="100" />');
console.log('Rez' + arr['result']);
console.log('result_msg' + arr['result_msg']);
switch(arr.result)
{
case 'choose':
var linki = '';
$.each(arr, function (index, value) {
if ($.type(value) === 'object')
{
linki += '<a href="javascript:;">'+ value['rnos'] +'</a><br />';
//console.log('rid: '+ value['rid']);
//console.log('rnos: '+ value['rnos']);
}
});
console.log('Ielādējam HTML: ' + linki);
$(this).html(linki);
break;
default: $(this).html(arr.result_msg);
}
$(this).dialog("option", "position", ['center', 'center'] );
})