ajax函数在页面加载时不触发

时间:2015-03-31 17:53:44

标签: javascript jquery ajax

我正在尝试使用它:https://github.com/derekmartinez18/Simple-Ajax-Spotify-Now-Playing我有这个非常简单的功能,显示我在spotify上听到的内容:

function get_spotify() {
$.ajax({
    type: 'POST',
    url: 'spotify.php',
    data: { request: 'true' },
    success: function(reply) {
        $('.now-playing').html("<p>" + reply + "</p>");
    }
});
};

问题是它没有触发。但如果我在控制台并输入

get_spotify()

它确实有效,结果显示在页面上。

这个js在关闭body标签之前在.js文件中调用,如下所示:

<script type="text/javascript">
function downloadJSAtOnload() {
    var element = document.createElement("script");
    element.src = "js/build/production.min.js";
    document.body.appendChild(element);
}

if (window.addEventListener)
    window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
    window.attachEvent("onload", downloadJSAtOnload);
else
    window.onload = downloadJSAtOnload;
</script>

我尝试在js文件中的函数之后添加这个,但没有任何反应,我也尝试了一个闭包函数或包装在文档就绪函数中,但它只是不会触发。我无法解决问题所在:/你可以帮忙吗?

4 个答案:

答案 0 :(得分:2)

我已经在小提琴中测试了你的代码,它可以自己动手。但是当我从你的unminified js文件中添加一些代码时,它会暂停所有执行。

所以,虽然我不能指出那个巨大的production.min.js文件中的每一个可能的错误,但我知道有错误,他们正在阻止代码进展。

这是一些容易找到的行,即语法错误(可能是编码问题,但无论如何报告错误):

// JQuery Twitter Feed. Coded by...
$(document).ready(function () {
 
    var displaylimit = 3;
    var twitterprofile = "vlrprbttst";
    var screenname = "v
...

我确定还有其他人。该文件看起来不太稳定

编辑:

显然错误是由于..

$(window).resize(function() { navHeight(); })();

应该是:

$(window).resize(function() { navHeight(); });

@Grundy找到并纠正错误的完全信用。

答案 1 :(得分:0)

具有班级名称的元素&#34;正在播放&#34;声明函数后,可能不会立即存在。尝试将您的调用打包到$(document).ready(function() { })中的函数:

$(document).ready(get_spotify);

这会将get_spotify传递给您的页面加载后调用的回调。

答案 2 :(得分:0)

您应该将您的功能置于全局范围内,并且可以在准备好文档时调用它:

$(function(){ // this makes sure DOM is ready
    get_spotify();
});

答案 3 :(得分:0)

您可以尝试添加以下代码

<强>代码

$(document).ready(function()
{
    get_spotify();
    // the rest of the code goes here
});