複雑な質問がありますので、なるべく短くしていきたいと思います。
私のユースケースは、モバイルWebサイトのRSSフィードを作成することです。インターフェイスは、Pulseリーダーのみのブラウザベースに似ています。
私は、XML APIに接続し、ページの読み込み時に初期データを取得するために、PHPを使用して手間のかかる作業を行っています。私はjQueryを使用してAJAX呼び出しを構築しようとしています。これにより、URIクエリ文字列が変更click()
され、新しい結果セットが取得され、既存の要素に追加されます。
私のURIは次のようになります。
http://www.domain.com/request.php?subcategoryId=1&page=1
PHPforeach()
ループを実行して、ページにデータを入力しています。
<?php // Collect Subcategories and Titles
foreach ($phpObjects->SubcategoryResult as $SubcategoryResult) { ?>
<?php // Callback to subcategoryArticleRequest() to recieve article data
$subcategoryObjects = subcategoryArticleRequest($SubcategoryResult->subcategoryId); ?>
<div class="subcategory">
<h2><?php echo $SubcategoryResult->subcategoryName; ?></h2>
<div class="articleFeed overthrow">
<table>
<tr>
<?php foreach ($subcategoryObjects->articleResult as $articleResult) { ?>
<td>
<!-- ARTICLE CONTENT POPULATED HERE -->
</td>
<?php } ?>
<td data-subcategoryId="<?php echo $SubcategoryResult->subcategoryId; ?>" onClick="page++">
<a class="loadMore" href="#">Load More</a>
</td>
</tr>
</table>
</div><!-- .articleFeed -->
</div>
<?php } ?>
主な焦点は、foreachの実行後にテーブルに追加するこの要素です。このリンクを使用して、AJAXを介してさらに記事をクリックしてロードします(ここにハードコーディングdata-subcategoryId
しています)。
<td data-subcategoryId="1">
<a class="loadMore" href="#">Load More</a>
</td>
基本的に、誰かがこのボタンをクリックすると、AJAX呼び出しが行われ、取得&page=2
などが行われます。
これが私のJavaScriptです:
var page = 1;
$('.loadMore').click(function() {
page++;
var subcategoryId = $(this).parent().attr('data-subcategoryId');
var url = 'http://www.domain.com/request.php?subcategoryId='+subcategoryId+'&page='+page;
console.log(url);
});
私が遭遇し続ける問題は、.loadMore
リンクをクリックするとpage
変数がインクリメントされますが、グローバルにそれを実行するということです。var page = 1;
クリック関数の内側を動かそうとすると、 1回だけインクリメントされ2
ます。
この関数を正しく取得したら、url
変数をAJAX関数に渡して、新しいコンテンツを取得できます。
念のためJSFiddleを設定しましたが、subcategoryIdは未定義として表示され続けます。