Ajax调用没有返回任何内容

时间:2015-10-30 17:56:35

标签: javascript jquery

我几乎是javascript和jQuery的初学者,所以请耐心等待。

我运行了Spark-API,以及通过ajax调用使用它的Web前端。

我正在尝试调用此函数

function getSpotifyURL(ms, name) {
        $.ajax({
            url: "http://localhost:8081/playlist?ms=" + ms + "&name=" + name,
            dataType: "json",
        })
        .done(function( data ) {
            console.log(data);
        })
    }

该方法位于:

之外
$(document).ready(function() {

它外面的原因是,如果它在$(文件).ready中,则称它为“未定义”时会出现错误。

Spark-method应该返回一个字符串(,直接通过浏览器尝试)。

我调用getSpotifyURL方法的方法是通过html按钮的“onclick”。像这样:

<a href='#' onclick='getSpotifyURL(" + data[i].duration + ",\"" + data[i].destination + "\")'>Create Spotify playlist for this trip</a>"

问题: .done-block在我的代码中什么都不做。没有任何东西打印到控制台。

我尝试了什么:

  • 在ajax部分中使用“success”而不是.done
  • 使用$(document).ready(function(){...}
  • 放置该函数

我知道您可能需要更多信息才能帮助我,但我不确定现在还提供哪些其他信息。所以,如果您需要知道某些事情,请询问。

想法?

解决!

我是一个愚蠢的人,忘记删除dataType:“json”,因为此实例中的Spark-server返回了一个String,而不是一个json对象。无论如何,感谢大家的投入。非常感谢。

2 个答案:

答案 0 :(得分:0)

我认为问题在于你在onclick上绑定你的函数。您可以在浏览器控制台上看到语法错误

function getSpotifyURL(ms, name) {
    console.log("http://localhost:8081/playlist?ms=" + ms + "&name=" + name);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href='#' onclick='getSpotifyURL(" + data[i].duration + ",\"" + data[i].destination + "\")'>Create Spotify playlist for this trip</a>"

我猜data是一个变量,所以你应该在没有括号的情况下调用它

<a href='#' onclick='getSpotifyURL(data[i].duration, data[i].destination)'>Create Spotify playlist for this trip</a>

答案 1 :(得分:0)

当您将函数放入undefined method调用中时,获得$(document).ready(function() { ... });的原因是因为您使用onclick属性来调用该函数。 $(document).ready(...)在全局上下文中关于onclick属性的位置,因此无法在文档中识别它。已导致undefined method错误

发送Ajax请求时,您还需要指定正在进行的请求类型(GETPOST)。我还建议重新调整你的ajax调用,看起来更像是 @ Moe&#39> 答案。

如果您想在DOM中使用它,请考虑执行以下操作:

<强> HTML

<!-- I gave the link a class name and removed the onclick= attribute -->
<a href="#" class="create-spotify-playlist">Create Spotify playlist for this trip</a>

<强>的JavaScript

$(document).ready(function() {

    // I gave the <a> link a click handler
    $(".create-spotify-playist").on("click", function(e) {
        e.preventDefault();  // prevents link from requesting

        var ms = ??   //I'm not sure where you're getting your parameters from,
        var name = ?? //so you will probably have to figure out how to get those in here yourself

        $.ajax({
            type: "GET",
            url: "http://localhost:8081/playlist",
            data: { ms: ms, name: name },
            success: function(data) {
                console.log("Success: " + data);
            },
            error: function(data) {
                console.log("Error: " + data);
            }
        });
    });
});

我为链接提供了一个点击处理程序并将其放在$(document).ready内,并且从之前删除了onclick属性,现在可以从$(document).ready内部触发。