【问题标题】:how to reuse jsonp response variable in jsonp url each time i call ajax via button?每次我通过按钮调用ajax时,如何在jsonp url中重用jsonp响应变量?
【发布时间】:2013-10-03 09:11:20
【问题描述】:

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

【问题讨论】:

  • 你应该把它放在你的函数之外定义的变量中。
  • 我不能将变量放在函数之外,因为变量是来自 jsonp 的响应!我们不能以递归方式使用变量吗?

标签: javascript jquery ajax jsonp instagram


【解决方案1】:

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

【讨论】:

  • @user1788736 这段代码应该可以正常工作。我没有要测试的访问令牌。当您使用访问令牌运行此脚本时,您能否分享结果? jsfiddle.net/8hzuS
  • 感谢您的帮助。您的解决方案在 jsfiddle 中有效,但是当我在代码中使用按钮时它不起作用!我什至现在都没有得到响应!不知道怎么解决!
  • @user1788736 你能发布你更新的代码,或者分享一个活生生的例子吗?
  • jon koops 非常感谢它没有显示数据的原因,我没有发出任何警报来查看结果。现在我发出警报,for 循环一切正常,非常感谢:-)
猜你喜欢
  • 2011-12-10
  • 2013-12-06
  • 2017-03-10
  • 2014-12-27
  • 1970-01-01
  • 2018-03-19
  • 1970-01-01
  • 2012-05-28
  • 2018-04-13
相关资源
最近更新 更多