0

コードを実行しようとすると、li 要素内のコンテンツを出力し、API からの新しいデータと比較します。(新しいデータが以前と同じデータであることはわかっています)。それでも、文字列の比較は false を返します。各文字列でアラートを使用したところ、それらが同じ文字列であることがわかりました。ここに私のコードがあります

<!DOCTYPE html>
<html>
<head>
<title>Boot Camp</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>
<script src="refreshview.js"></script>
<script src="loadview.js"></script>
<script type="text/javascript">
loadview();
</script>
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
</head>

<body>
<div data-role="header"> 
<h1>New DVD Releases</h1> 
</div> 
<div data-role="content" >
<ul data-role="listview" id="datalist"></ul>
</div>
</body></html>

loadview を呼び出して、li 要素を ul に入れます

function loadview() {
$.ajax({
url:'http://api.rottentomatoes.com/api/public/v1.0/lists/dvds/new_releases.json?    page_limit=16&page=1&country=us&apikey=k4uaze4937mw3hf82upstxqw',
type:'GET',
dataType:'jsonp',
success:function(data){
    var movies = data.movies;
    $.each(movies, function() {
    $('#datalist').append('<li><a><img src='+this.posters.thumbnail+' class="ui-li-thumb"><h3 class="ui-li-heading">'+this.title+'</h3><p class="ui-li-desc">DVD Date: '+this.release_dates.dvd+'</p></a></li>');    
    //get data from ul
    });
    $('#datalist').listview('refresh'); 
    refreshview();//every 30 seconds
},

error: function(xhr, textStatus, errorThrown){
        alert('request failed :'+xhr);
                    alert('request failed :'+textStatus);
    alert('request failed :'+errorThrown);
}
}); 
};

コードが読み込まれた後、refreshview を呼び出して同じ API クエリを実行し、li の値をオンラインの要素と比較します (同じである必要があります)。

function refreshview() {
$.ajax({
url:'http://api.rottentomatoes.com/api/public/v1.0/lists/dvds/new_releases.json?page_limit=16&page=1&country=us&apikey=k4uaze4937mw3hf82upstxqw',
type:'GET',
dataType:'jsonp',
success:function(data){
    var movies = data.movies;
    var lis = new Array();
    var i=0;

    $("#datalist").children("li").each(function()
    {
     lis.push($(this).text());
    });

    $.each(movies, function() {
        alert (this.title+"DVD Date: "+this.release_dates.dvd+"\n"+lis[i]);
        alert ($.trim(this.title+"DVD Date: "+this.release_dates.dvd)==$.trim(lis[i]));
        if (($.trim(this.title+"DVD Date: "+this.release_dates.dvd))==$.trim(lis[i]))
            {
             alert ("hi"+i);//add the new item to listofchanges
             i++;
            }


    });
},

error: function(xhr, textStatus, errorThrown){
        alert('request failed :'+xhr);
                    alert('request failed :'+textStatus);
    alert('request failed :'+errorThrown);
}
}); 
};

私のアラートは、2 つの文字列が常に同じであることを示しています。しかし、比較 "==" は常に false を返します。トリムを使用してみましたが、最初のものしか修正されませんでした。

== が false を返すのはなぜですか? そこに不正な文字はありますか?そして、これら2つの文字列を同じ「フォーマット」に変換するにはどうすればよいですか

4

1 に答える 1

0

i は、それらが同じ場合にのみインクリメントされるため、lis 配列の最初の要素は、更新されたmovies 配列の最初の要素と一致する必要があります。それらは同じ映画リストですか? それとも、更新によってそれらが別の順序で返されましたか? つまり、ゴッドファーザーは loadview では 0 位ですが、refreshview では 5 位ですか?

于 2013-09-05T01:47:28.293 に答える