jquery在ajax调用的页面中不起作用

时间:2011-09-30 11:48:48

标签: jquery ajax

如果我在页面中有以下内容:

$(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)
                    }
                }
            });
        });
    });

4 个答案:

答案 0 :(得分:2)

您的网页是文字。当您从服务器请求时,您使用的浏览器会解释它。

如果您正在执行ajax请求,则内容将作为字符串放在变量上,等待您执行某些操作。如果它上面有脚本并不重要,它就不会自动执行。

你必须创建一个脚本元素,将其作为innerText,并将其附加到DOM以使其由浏览器执行。

答案 1 :(得分:0)

当您调用AJAX时,不会执行远程js代码,但您可以将js脚本作为文本返回并使用eval()函数在页面上执行

答案 2 :(得分:0)

当你说你正在通过Ajax“调用”一个页面时,你的意思是说你正在从服务器中请求一些HTML(动态的或其他的),它恰好包含了这个JavaScript吗?

如果是这样,那个代码段应该运行,但是直到你将它插入DOM。

如果您使用的是jQuery,从服务器获取HTML并用它替换DOM元素内容的最典型方法是“加载”方法:

jQuery .load()

答案 3 :(得分:0)

ajax请求没有出现警报的原因是因为“文档”已经执行了“就绪”状态。

从js文件中删除$(document).ready()(在其中保留alert())并尝试通过ajax加载它。它应该工作。