2013-05-07 152 views
1

我试图重新加载一个div,一旦一个函数被点击并执行。完成后AJAX重新加载div

$('newThread').addEvent('submit', addThread); 

function addThread(e){ 
    e.stop(); 
    var threadRequest = new Request.JSON({ 
     url: 'control.php?action=createThread', 
     onSuccess: createThreadSuccess 
    }).post(this); 
} 

function createThreadSuccess() { 
    new Element('span',{ 
     'text':'Post successful.' 
    }).inject($(threadList)); 

我一直在使用location.reload(true);,但我我纠正说这将刷新整个页面,而不仅仅是在div我之后?

一旦createThreadSuccess已执行我希望的对答div来重装,我一直在使用this link的意见,但它似乎并没有在a jsFiddle

工作请注意我使用MooTools的不是jQuery的

+0

你是什么意思通过重新加载一个div?什么是div加载? – Adidi 2013-05-08 00:13:26

回答

0

您无法'重新加载div'。 A div只是整个网页上的一个元素,并且它本身没有它从其加载的URL,因此无法重新加载。您可以使用Ajax调用设置/替换div的内容,但这绝对不是“重新加载” - 您需要明确定义URL以加载其新内容。

如果你想从远程URL加载它明确地更换div的内容,你应该使用Request.HTML代替Request.JSON,并为update参数提供的元素(或它的ID):

  • update - (element:defaults to null)在完成请求时插入请求的响应文本的元素。

如果你只是希望替换元素的内容,无需远程加载,你可以简单地做:

$('id-of-div').set('text', 'Text to be placed inside the element'); 

或者:

$('id-of-div').set('html', '<p>HTML ending up <em>inside</em> the div</p>'); 

或者建立一个完整的子树就像你已经拨打new Element一样。

至于第二个问题:location.reload()只是window.location.reload()的速记,所以是的,它会重新加载整个页面(或框架)。它可以是因为实际上窗口或框架具有它被加载的位置。