Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery函数-donds';不归_Javascript_Jquery - Fatal编程技术网

Javascript jquery函数-donds';不归

Javascript jquery函数-donds';不归,javascript,jquery,Javascript,Jquery,可能重复: 我的getJsonObject函数有点问题。 我想让我的代码做的是,每次单击next,getJsonObject函数都会获得文章的下一页,当dom就绪时,我会显示文章的标题。但是如果出现错误(比如页面用完时),则pageNr将不再增加。 问题是getJsonObject函数不会返回0,尽管会显示警报(“返回值为0”) 这是我的密码: <html> <head> <title>World News</title>

可能重复:

我的getJsonObject函数有点问题。 我想让我的代码做的是,每次单击next,getJsonObject函数都会获得文章的下一页,当dom就绪时,我会显示文章的标题。但是如果出现错误(比如页面用完时),则pageNr将不再增加。 问题是getJsonObject函数不会返回0,尽管会显示警报(“返回值为0”)

这是我的密码:

<html>
    <head>
        <title>World News</title>
        <link rel="stylesheet" type="text/css" href="css/fullWindow.css" />
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
        <script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.9/jquery-ui.js" type="text/javascript"></script>
        <script src = "https://raw.github.com/janl/mustache.js/master/mustache.js" type = "text/javascript"></script>
    <body>      
        <section id="mainContent">          
            <div class="prevNext floatRight"><a id="prev" href="#">prev</a> | <a id="next" href="#">next</a></div>
            <section id="news">
                <p id="headline">This is my headline for the moment.</p>

            </section>
        </section>              


    <script type="text/javascript">
        $(document).ready(function(){
            var pageNr = 1;
            var sectionName = "science";
            var err = '2';

            $("#next").click(function(){

                /* it removes the tag 'p' with id="headline" and inserts some other content */
                $.when($('#headline').remove()).then(function(){                            
                    err = getJsonObject(sectionName, pageNr+1);
                    alert('err: '+err);

                    /* if there is no error go to the next page */
                    if(err == '0'){
                        pageNr++;                   
                    }
                });
            });
        });
        function getJsonObject(sectionName, pageNr){        

            $.getJSON('http://content.guardianapis.com/search?q=' + sectionName +      '&page=' + pageNr + '&page-size=5&order-by=relevance&format=json&show-fields=all&date-  id=date%2Flast7days&api-key=gd6ndfndjyr8sd2p3rq3ubkg&callback=?', 
            function(data){                 
                var results;    

                /* I get status == error when I finish iterating the pages*/    
                if(data.response.status != 'error'){            

                    $('#news').append('<p id="headline">'+data.response.results[pageNr].fields.headline+'</p>');                        

                    alert('return is 0');
                    return '0';
                }else{

                    alert('return is 1');           
                    return '1';         
                }
            });
        }
    </script> 
    </body>
</html>

世界新闻
| 

这是我目前的头条新闻

$(文档).ready(函数(){ var-pageNr=1; var sectionName=“科学”; var err='2'; $(“#下一步”)。单击(函数(){ /*它删除id=“headline”的标记“p”,并插入一些其他内容*/ $.when($('#headline').remove()).then(function(){ err=getJsonObject(节名,第1页); 警报('err:'+err); /*如果没有错误,请转到下一页*/ 如果(错误='0'){ pageNr++; } }); }); }); 函数getJsonObject(sectionName,pageNr){ $.getJSON('http://content.guardianapis.com/search?q=“+sectionName+”&page=“+pageNr+”&page size=5&order by=relevance&format=json&show fields=all&date-id=date%2Flast7days&api key=gd6ndfndjyr8sd2p3rq3ubkg&callback=?”, 函数(数据){ var结果; /*当我完成页面迭代时,我得到status==error*/ 如果(data.response.status!=“error”){ $(“#新闻”).append(“

”+data.response.results[pageNr].fields.headline+”

”); 警报('返回值为0'); 返回“0”; }否则{ 警报(“返回值为1”); 返回“1”; } }); }
知道为什么return不起作用吗?谢谢。

您的
getJsonObject(sectionName,pageNr)
生成了一个
$。getJSON
是一个AJAX异步调用


因此,返回不能正常工作,因为
getJSON
是异步执行的。常见的解决方案是将另一个参数传递给
getJsonObject
,这是一个回调函数,然后使用首先要返回的值调用它

function getJsonObject(sectionName, pageNr, callback){        

    $.getJSON('http://content.guardianapis.com/search?q=' + sectionName +      '&page=' + pageNr + '&page-size=5&order-by=relevance&format=json&show-fields=all&date-  id=date%2Flast7days&api-key=gd6ndfndjyr8sd2p3rq3ubkg&callback=?', 
    function(data){                 
        var results;    

        /* I get status == error when I finish iterating the pages*/    
        if(data.response.status != 'error'){            

            $('#news').append('<p id="headline">'+data.response.results[pageNr].fields.headline+'</p>');                        

            alert('return is 0');
            callback('0');
        }else{

            alert('return is 1');           
            callback('1');         
        }
    });
}
函数getJsonObject(sectionName,pageNr,callback){
$.getJSON('http://content.guardianapis.com/search?q=“+sectionName+”&page=“+pageNr+”&page size=5&order by=relevance&format=json&show fields=all&date-id=date%2Flast7days&api key=gd6ndfndjyr8sd2p3rq3ubkg&callback=?”,
函数(数据){
var结果;
/*当我完成页面迭代时,我得到status==error*/
如果(data.response.status!=“error”){
$(“#新闻”).append(“

”+data.response.results[pageNr].fields.headline+”

”); 警报('返回值为0'); 回调('0'); }否则{ 警报(“返回值为1”); 回调(“1”); } }); }

这也是将回调函数传递给
$.getJSON
的原因。因为在幕后它正在使用异步执行HTTP请求的东西。

您应该使用回调函数重写
getJsonObject

function getJsonObject(sectionName, pageNr, callback){   
   $.getJSON(..., function(data) {

      ...
      callback('1');
   }
使用
getJsonObject

getJsonObject(sectionName, pageNr+1, function(err) {
   alert(err);
});

为什么要将
when()
用于同步任务,如
remove()
?如果传递
getJsonObject()
instead@Fabrizio我的项目实际上是在每次单击next时显示页面中的文章。因此,它会删除当前显示的文章并附加一些其他文章。嗯,有时它会附加而不删除当前的。我不知道为什么会这样,所以我采取了一些措施。你知道是什么原因吗?@asgoth我知道这是一个异步调用,我试图添加一个回调函数,但它不起作用,但现在我发现我没有正确编写它。谢谢大家。