我有一个复杂的问题,所以我会尽量保持简短。
我的用例是为移动网站构建 RSS 提要。该界面将类似于仅基于浏览器的 Pulse 阅读器。
我正在使用 PHP 进行繁重的工作,以连接到 XML API 并在页面加载时提取初始数据。我正在尝试使用 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;
click 函数内部,它只会增加一次到2
.
一旦我得到了这个函数,我就可以将url
变量传递给我的 AJAX 函数以获取新的内容。
我设置了一个 JSFiddle 以防万一,尽管它一直将 subcategoryId 显示为未定义: