更新 ajax 调用的 URL

Updating URL on ajax call

提问人:COBNETCKNN 提问时间:11/7/2023 更新时间:11/7/2023 访问量:38

问:

每当单击模式显示内容的按钮时,尝试更新 url,设法找出如何更改它,但它返回 http://localhost:3000/wp-admin/admin-ajax.php

这不是我想要的,我想要在我的域名之后使用普通的博客文章,我有什么方法可以动态地实现这一点吗?我正在为此使用 wordpress。

window.history.pushState(null, null, this.url);

整个ajax.js

jQuery(function($) {

    $('body').on('click', '.view-post', function() {
        var data = {
            'action': 'load_post_by_ajax',
            'id': $(this).data('id'),
            'security': blog.security
        };
 
        $.post(blog.ajaxurl, data, function(response) {
            response = JSON.parse(response);
            $('#postModal h5#postModalLabel').text(response.title);
            $('#postModal .modal-body').html(response.content);
 
            var postModal = new bootstrap.Modal(document.getElementById('postModal'));
            postModal.show();

            window.history.pushState(null, null, this.url);

            
        });
    });
});
JavaScript jQuery Ajax WordPress 调用

评论


答:

0赞 COBNETCKNN 11/7/2023 #1

找到了解决方案,所以你必须像这样将 slug 名称存储在你的回调函数中。

        // Get the post ID or some way to retrieve the post slug
        $post_id = get_the_ID(); // Example: Assuming you're inside a loop

        // Get the post slug
        $post_slug = get_post_field('post_name', $post_id);
        
        $arr_response = array(
            'title' => get_the_title(),
            'content' => get_the_content(),
            'post_slug' => $post_slug,
        );

echo json_encode($arr_response);

在 AJAX JS 文件中,您可以提取post_slug并将其存储在变量中

        $.post(blog.ajaxurl, data, function(response) {
            response = JSON.parse(response);
            var postSlug = response.post_slug;


window.history.pushState(null, null, postSlug);