我调用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/

10-13 06:40