如何在jQuery UI对话框中加载页面
我试图在jQuery对话框中加载另一个页面。我已经看过很多文章(包括下面的)。似乎公认的技术是:如何在jQuery UI对话框中加载页面,jquery,razor,Jquery,Razor,我试图在jQuery对话框中加载另一个页面。我已经看过很多文章(包括下面的)。似乎公认的技术是: $(function () { $(document).ready(function () { var d1= $('#dialog-import').dialog({ resizeable: false, height: 600, modal: true,
$(function () {
$(document).ready(function () {
var d1= $('#dialog-import').dialog({
resizeable: false,
height: 600,
modal: true,
autoOpen: false,
buttons: {
'My button1': function () {
$(this).dialog('close');
},
Cancel: function () {
$(this).dialog('close');
}
}
});
d1.load('/DataSets/ImportSpreadsheet/91D55CAC-6C2C-46EE-8730-0DBFE26D1D92').dialog('open');
});
});
这将打开对话框,包括完整内容和我的两个对话框按钮,但是,这两个对话框按钮不起作用(我无法单击它们)
代码的其他备选方案,如:
$('#dialog-import').load('/DataSets/ImportSpreadsheet/' + a, function () {
$('#dialog-import').dialog('open');
});
在Google开发者控制台中导致此错误:
Uncaught TypeError: Object [object Object] has no method 'dialog'
我一定错过了什么。然而,我真的一直在看,没有任何运气
谢谢
这就是我想做的,尝试了他们的建议,但没有成功:
问题是我试图加载一个完整的页面,其中包括页眉、正文和html元素。jQuery不喜欢这样 我找到了两种可能的解决方案:
$('dialog import').attr('src','/dataset/ImportSpreadsheet/…'); $('dialog import')。dialog('open');
});
我会继续研究,但有人会发现这很有用。我想你忘了包括jQueryUI代码,因为
对话框
方法未知。它包括在内。请注意,如果我不调用加载,对话框将打开(如果我执行$('#dialog import')。对话框('open')将打开,但它没有任何内容,因为我没有加载任何内容)。我只能在.load()
调用中使用无效URI再现错误,这似乎与您的描述不符,因为您正在接收异步数据。您可以通过将.load()
调用替换为full来发现更好的错误(如果有),因为success/error函数是显式的。我相信这个问题可能与.load()
的错误响应有关,它破坏了对话框的功能。Andy,我也试过$.get()一个,它的行为也一样。我正在加载的Url包含一个完整的html页面,即:它不是一个小节。这是有效的吗?如果HTML是完整的,而不仅仅是一个片段,它应该不会导致问题。浏览器的.innerHTML
通常会过滤
、
和
等元素。使用full进行加载,同时确保在选项中设置了dataType:'html'
,怎么样。根据我的经验,jQuery的数据类型猜测并不总是正确的。没有一个有效的例子,我无法提供任何更具体的东西,但我很高兴继续猜测:-)太好了!我很高兴你得到了一个解决方案,并且你添加了一个答案,因为它将对将来搜索的其他人非常有用。您最后是否尝试了$.ajax()
方法?我确信我以前在对话框中加载过完整的HTML,并且必须在选项中指定dataType:'HTML'
。不管怎样,局部视图总是更可取的,因为没有发送不必要的数据,但我仍然对它为什么不能处理整个页面感兴趣。否。我还没有测试$.ajax。我测试了$.get。我会在有时间的时候测试ajax(推迟测试)。谢谢