在 url 中传递参数时如何使用 AJAX 停止页面刷新
How can I use AJAX to stop page from refreshing when passing parameters in url
潜伏已久
免责声明:
首先,对于在本论坛中提出的问题可能是重复的问题,提前致歉。由于我没有使用 ajax 的经验,因此我需要具体说明我要实现的目标。
上下文:
我正在开发一个供我和我的朋友使用的社交网站,并且我正在制作一个简单的个人消息系统。因此,我通过单击锚点在 url 中传递参数,以便整理出向用户显示的消息等。
该页面本身称为 messages.php,它看起来像这样:
[messages.php][1]
如您在上图中所见,我在消息列表底部有一个名为“9 meldinger til”(翻译为“9 more messages”)的块 link。该按钮统计每个用户的剩余 PM,并在单击时向 url 添加两个参数:?view=inbox&show_all.
<a href='?view=inbox&show_all' class='small'>" . $remaining . "</a>
这些参数是在php:
中使用$_GET获取的
$view = $_GET['view'];
$show_all = $_GET['show_all'];
当我向下滚动 messages.php 并单击“9 meldinger til”时,页面(显然)刷新并跳回顶部,现在添加了url.
的参数
我需要什么帮助:
如何使用 ajax 阻止页面在单击锚点后刷新? (这样页面在导航消息时不会跳来跳去)
而且,如何在我的页面上实现它?示例代码是什么样的?
为此,您需要使用 AJAX。
$('.small').on('click', function(event){
event.preventDefault();
var href = $(this).attr('href');
var hrefSplit = href.split('?view=');
var viewSplit = hrefSplit[0].split('&');
var view = viewSplit[0]
$.ajax({
url: '/messages.php?view=' + view + '&show_all',
success: function(result) {
result = $(result).find('#messageList');
$('#messageList').html(result);
}
});
});
类似于此的内容应该适合您,但可能需要进行一些调整,并且可能有更有效的方法来获取 view
查询的值。
这样做的目的是,使用 event
,它将阻止锚点默认操作发生。然后我们从单击的 link 中获取 href
,并使用它来获取 view
查询。有了这个,我们然后 ajax 到 url 中带有该查询的页面,并从呈现的内容中获取 #messageList
HTML 内容,然后返回页面,我们更改当前的 #messageList
HTML 到新的 #messageList
HTML
为了使拆分更直接,您可以使用:
<a href='?view=inbox&show_all' data-view="inbox" class='small'>" . $remaining . "</a>
那么你只需要:
var view = $(this).data('view');
而不是使用 var href
、var hrefSplit
、var viewSplit
。
潜伏已久
免责声明:
首先,对于在本论坛中提出的问题可能是重复的问题,提前致歉。由于我没有使用 ajax 的经验,因此我需要具体说明我要实现的目标。
上下文:
我正在开发一个供我和我的朋友使用的社交网站,并且我正在制作一个简单的个人消息系统。因此,我通过单击锚点在 url 中传递参数,以便整理出向用户显示的消息等。
该页面本身称为 messages.php,它看起来像这样: [messages.php][1]
如您在上图中所见,我在消息列表底部有一个名为“9 meldinger til”(翻译为“9 more messages”)的块 link。该按钮统计每个用户的剩余 PM,并在单击时向 url 添加两个参数:?view=inbox&show_all.
<a href='?view=inbox&show_all' class='small'>" . $remaining . "</a>
这些参数是在php:
中使用$_GET获取的$view = $_GET['view'];
$show_all = $_GET['show_all'];
当我向下滚动 messages.php 并单击“9 meldinger til”时,页面(显然)刷新并跳回顶部,现在添加了url.
的参数我需要什么帮助:
如何使用 ajax 阻止页面在单击锚点后刷新? (这样页面在导航消息时不会跳来跳去)
而且,如何在我的页面上实现它?示例代码是什么样的?
为此,您需要使用 AJAX。
$('.small').on('click', function(event){
event.preventDefault();
var href = $(this).attr('href');
var hrefSplit = href.split('?view=');
var viewSplit = hrefSplit[0].split('&');
var view = viewSplit[0]
$.ajax({
url: '/messages.php?view=' + view + '&show_all',
success: function(result) {
result = $(result).find('#messageList');
$('#messageList').html(result);
}
});
});
类似于此的内容应该适合您,但可能需要进行一些调整,并且可能有更有效的方法来获取 view
查询的值。
这样做的目的是,使用 event
,它将阻止锚点默认操作发生。然后我们从单击的 link 中获取 href
,并使用它来获取 view
查询。有了这个,我们然后 ajax 到 url 中带有该查询的页面,并从呈现的内容中获取 #messageList
HTML 内容,然后返回页面,我们更改当前的 #messageList
HTML 到新的 #messageList
HTML
为了使拆分更直接,您可以使用:
<a href='?view=inbox&show_all' data-view="inbox" class='small'>" . $remaining . "</a>
那么你只需要:
var view = $(this).data('view');
而不是使用 var href
、var hrefSplit
、var viewSplit
。