我几乎是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在我的代码中什么都不做。没有任何东西打印到控制台。
我尝试了什么:
我知道您可能需要更多信息才能帮助我,但我不确定现在还提供哪些其他信息。所以,如果您需要知道某些事情,请询问。
想法?
解决!
我是一个愚蠢的人,忘记删除dataType:“json”,因为此实例中的Spark-server返回了一个String,而不是一个json对象。无论如何,感谢大家的投入。非常感谢。
答案 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请求时,您还需要指定正在进行的请求类型(GET
或POST
)。我还建议重新调整你的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
内部触发。