AJAX在完成后重新加载div

时间:2013-05-07 23:53:57

标签: javascript ajax mootools

我试图在点击并执行一个函数后重新加载一个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之后我希望threadList div重新加载,我一直在使用this link获取建议,但它似乎不适用于a jsFiddle

请注意我使用的是MooTools而不是jQuery

1 个答案:

答案 0 :(得分:0)

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

如果要通过从远程网址加载明确替换div的内容,则应使用Request.HTML代替Request.JSON,并提供元素(或其ID) )作为update参数:

  
      
  • 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()的简写,所以是的,它会重新加载整个页面(或框架)。这可能是因为窗口或框架实际上具有从中加载的位置。

相关问题