该网站: 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)
了,那么我得到长度为 1 的 jQuery 对象。
fadeOut
工作正常,所以我知道我可以很好地操作,那$target
为什么我不能替换 HTML?
我在这里创建了一个 jsfiddle,它可以工作。
那么为什么它不能在我的 AJAX 中工作呢?
更新
在@nrabinowitz 发表评论后,除了更新 HTML 之外,我删除了所有代码并且它工作正常。此代码有效:
case 'html':
console.log(value);
var $target = $('#' + value.targetId);
$target.html(value.content);
break;
什么可能导致它在 if else 语句中停止工作?
更新 2
将外壳拆开并重新组合在一起(使用撤消,而不是复制和粘贴或任何东西,只是撤消删除)后,它就可以工作了。该代码与我最初发布的代码相同,并且它突然起作用>.< ...去图。谢谢大家的帮助。