for ループ内で getjson を呼び出しています。現在、私のコードはすべてのアイテムを印刷し、販売されていないアイテムを省略していません!
これは、アイテムが販売されているかどうかを確認する部分です。
$.getJSON('http://anyorigin.com/get?url=http://www.asite.com/itemtocheck.php='+ itemName + '/&callback=?', function(data){
var siteContents = data.contents;
var n=siteContents.search("This item is not on sale");
if(n=-1)
{
//alert("This item is on sale. n:"+n);
var siteContents2 = "This item is on sale:"+itemName;
document.getElementById("myDiv").innerHTML += siteContents2;
};
この if ステートメントの何が問題なのかわかりません。アイテムが販売されていなくても、常に true になります。「forループ」内のgetjsonへの各呼び出しの間に遅延を置く方法はありますか(非常に短い遅延なので、getjsonはデータを取得し、それをフィルタリングするのに十分な時間があります)?
よくわかりませんが、おそらく「forループ」がgetjsonを非常に高速に呼び出しているため、各項目をチェックするのに十分な時間を与えていないと思います。私もこのようにしてみました:
setTimeout(GetJSONResult('pen'), 500);
しかし、何らかの理由で機能しませんでした!販売されていないアイテムを除外するようにコードを修正するのに役立つ人はいますか?ありがとう
<script>
function GetJSONResult(itemName)
{
//alert("test:"+itemName);
$.getJSON('http://anyorigin.com/get?url=http://www.asite.com/itemtocheck.php='+ itemName + '/&callback=?', function(data){
var siteContents = data.contents;
//writes to textarea
document.myform.outputtext.value = siteContents ;
var n=siteContents.search("This item is not on sale");
document.write("value of n"+n);
if(n=-1)
{
//alert("This item is on sale. n:"+n);
var siteContents2 = "This item is on sale:"+itemName;
document.getElementById("myDiv").innerHTML += siteContents2;
};
});
};
items=["pen","paper","book","tshirt","cup","coffee","plate","cherry","apple","mango","orange"];
for (var i=0;i<items.length;i++)
{
document.write(items[i] + "<br>");
GetJSONResult(items[i]);
}
////setTimeout(GetJSONResult('pen'), 500);
////setTimeout(GetJSONResult('paper'), 500);
////setTimeout(GetJSONResult('book'), 500);
////setTimeout(GetJSONResult('tshirt'), 500);
////GetJSONResult('cup');
////GetJSONResult('coffee');
////GetJSONResult('plate');
////GetJSONResult('cherry');
////GetJSONResult('apple');
////GetJSONResult('mango');
////GetJSONResult('orange');
</script>
</head>
<body>
<br>
<div id="myDiv"></div>
<br>
</body>
</html>