为什么页面上的HTML没有更新?

时间:2013-08-27 15:43:53

标签: javascript jquery html ajax

网站:http://mercury.demomycms.co.uk/account.php(注册帐户标签)。

我正在创建一个AJAX处理程序,因此我可以为我的网站提供一个单独的AJAX JavaScript文件,然后通过它传递所有AJAX调用。

到目前为止一切运行良好,它可以将AJAX请求发送到正确的文件并以JSON格式接收数据,但是在更新页面上的HTML时我遇到了问题。

我传回一个带有对象ID的变量来放置HTML。

我也传回另一个带有HTML的变量来放入该对象。我从AJAX调用中恢复了所有数据。但是它根本不会更新页面上的HTML。

这是我的代码:

/**
 * $value contains an array of the following
 *
 * content      The HTML code that is replacing the content of the specified div.
 * fade         Whether to fade out the ID or not before changing the content.
 * fadeOut      Whether to fade out the div after a certain amount of time.
 * function     Function to call at the end of the case.
 * restore      Restore the original content in the div. Only used if fadeOut is set.
 * targetId     The ID of the target div that is having it's content replaced.
 */                  
case 'html':
    console.log(value);
    var $target = $('#' + value.targetId);
    var original = '';
    if(value.restore) original = $target.html();
    if($target.length > 0) {
        if(value.fade) {
            $target.fadeOut(500);
            setTimeout(function() {
                $target.html(value.content).fadeIn(500);
            }, 510)
        } else {
            $target.html(value.content);
        }
    }
    if(value.fadeOut > 0) {
        setTimeout(function() {
            $target.fadeOut(500);
        }, value.fadeOut);
    }
    if(value.fadeOut > 0 && value.restore) {
        $target.html(original);
    }
    if(value.function != false) {
        window[value.function]();
    }
    break;

console.log(value)产生预期的,它给了我正确的ID和HTML,如果我做console.log($target),那么我得到的jQuery对象的长度为1。

fadeOut工作正常,所以我知道我可以操作$target很好,为什么我不能替换HTML?

我创建了jsfiddle here,但它确实有效。

那为什么它在我的AJAX中不起作用?

<小时/> 的更新

在@nrabinowitz评论之后,除了更新HTML之外,我删除了所有代码并且它有效。此代码有效:

case 'html':
    console.log(value);
    var $target = $('#' + value.targetId);
    $target.html(value.content);
    break;

什么可能导致它停止在if else语句中工作?

<小时/> 更新2

将案件分开并再次重新组合后(使用撤销,不复制和粘贴或任何东西,只需撤消删除)就可以了。代码与我最初发布的代码相同,它突然起作用&gt;。&lt; ... 去搞清楚。谢谢大家的帮助。

0 个答案:

没有答案