0

我调用了一个 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>
4

1 回答 1

3

您应该在函数之外创建一个新变量来存储 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/

于 2013-10-03T01:11:20.910 回答