我调用jsonp函数并获得响应,但下一次我按下按钮时,我想使用MaxTagId(var MaxTagId = data.pagination.next_max_tag_id;)。现在,我每次按下按钮时,代码就无法使用MaxTagId值,因为每次来自instagram api的响应都是相同的。如果它使用了MaxTagId值,那么每次我单击按钮时都应该得到新的响应,因为jsonp url在每个调用中都在变化!谁能告诉我每次按下按钮时在jsonp url中使用MaxTagID时我做错了什么?
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
function callApi2(){
$.ajax({
type: "GET",
dataType: "jsonp",
cache: false,
url: "https://api.instagram.com/v1/tags/mango/media/recent?access_token=xxxxxxx&max_tag_id=+MaxTagId+",
success: function(data) {
alert("Next Max Tag Id:"+data.pagination.next_max_tag_id);
document.myform.outputtext.value = document.myform.outputtext.value+data.pagination.next_max_tag_id+'\n' ;
var MaxTagId = data.pagination.next_max_tag_id;
console.log(data);
for (var i = 0; i < 21; i++) {
$(".content").append("<img class='SC-instagram-image' src='" + data.data[i].images.low_resolution.url +"' />");
}
}
});
}
</script>
</head>
<body>
<div class="content"></div>
<form id="myform" name="myform" action="./ok.php" method="post">
<td><textarea rows="6" cols="15" name="outputtext" style="width: 99%;"></textarea></td>
</form>
<button onclick="callApi2()">Start</button>
</html>
最佳答案
您应该在函数外部创建一个新变量来存储ID。
var maxTagId = null;
function callApi2() {
$.ajax({
type: "GET",
dataType: "jsonp",
cache: false,
url: "https://api.instagram.com/v1/tags/mango/media/recent?access_token=xxxxxxx" + ( maxTagId ? "&max_tag_id=" + maxTagId : ""),
success: function(data) {
maxTagId = data.pagination.next_max_tag_id;
}
});
}
当然,这些变量现在位于全局名称空间中,因此理想情况下,您应该将它们放入自调用函数中。有关更多信息,请参见:http://marcofranssen.nl/writing-modular-javascript-without-polluting-the-global-namespace/
关于javascript - 每次通过按钮调用Ajax时,如何在jsonp url中重用jsonp响应变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19149170/