如果我在页面中有以下内容:
$(document).ready(function () {
alert('moo');
});
当我查看该页面时它将显示警告但是如果通过Ajax调用该页面则警报将不显示...任何想法为什么?或者如何解决这个问题?
注意:这是测试javascript,我实际上并没有在我的真实应用中显示提醒
由于
按要求提供Ajax爵士乐:
$(document).ready(function ()
{
$('ul#ui-ajax-tabs li a').click(function (e)
{
e.preventDefault();
$("ul#ui-ajax-tabs li").removeClass("selected");
$(this).parents('li').addClass("loading");
var url = $(this).attr("href");
var link = $(this);
$.ajax({
url: url,
success: function (responseHtml)
{
//$('div#ui-tab-content').html($(responseHtml));
$('div#ui-tab-content').html($(responseHtml).find('div#ui-tab-content > div#ui-ajax-html'));
$(link).parents('li').addClass('selected');
$("ul#ui-ajax-tabs li").removeClass("loading");
History.pushState(null, $(responseHtml).filter('title').text(), url)
},
error: function (responseHtml)
{
$('div#ui-tab-content').html('<div class="message error"><p><strong>Something went wrong...</strong> Please contact the Administrator!</p></div>');
$(link).parents('li').addClass('selected');
$("ul#ui-ajax-tabs li").removeClass("loading");
History.pushState(null, $(responseHtml).filter('title').text(), url)
},
statusCode:
{
404: function (responseHtml)
{
$('div#ui-tab-content').html('<div class="message error"><p><strong>Error 404 (Not Found)</strong> Please contact the Administrator!</p></div>');
$(link).parents('li').addClass('selected');
$("ul#ui-ajax-tabs li").removeClass("loading");
History.pushState(null, 'Error 404 (Not Found)', url)
},
500: function (responseHtml)
{
$('div#ui-tab-content').html('<div class="message error"><p><strong>Error 500 (Internal Server Error)</strong> Please contact the Administrator!</p></div>');
$(link).parents('li').addClass('selected');
$("ul#ui-ajax-tabs li").removeClass("loading");
History.pushState(null, 'Error 500 (Internal Server Error)', url)
}
}
});
});
});
答案 0 :(得分:2)
您的网页是文字。当您从服务器请求时,您使用的浏览器会解释它。
如果您正在执行ajax请求,则内容将作为字符串放在变量上,等待您执行某些操作。如果它上面有脚本并不重要,它就不会自动执行。
你必须创建一个脚本元素,将其作为innerText,并将其附加到DOM以使其由浏览器执行。
答案 1 :(得分:0)
当您调用AJAX时,不会执行远程js代码,但您可以将js脚本作为文本返回并使用eval()函数在页面上执行
答案 2 :(得分:0)
当你说你正在通过Ajax“调用”一个页面时,你的意思是说你正在从服务器中请求一些HTML(动态的或其他的),它恰好包含了这个JavaScript吗?
如果是这样,那个代码段应该运行,但是直到你将它插入DOM。
如果您使用的是jQuery,从服务器获取HTML并用它替换DOM元素内容的最典型方法是“加载”方法:
答案 3 :(得分:0)
ajax请求没有出现警报的原因是因为“文档”已经执行了“就绪”状态。
从js文件中删除$(document).ready()
(在其中保留alert()
)并尝试通过ajax加载它。它应该工作。