How to get and apply current page query parameters from current AJAX request

I’m having a hard time figuring out how to do this.

Essentially I have a table displaying users on a page. The table is paginated with the PagerExtender and sortable with the TableSortExtender.

Each user row has links with “use-ajax” classes; these links perform actions on the user, and then rebuild the current table after performing those actions — this happens all in AJAX.

The problem I am having is, when I rebuild the table in AJAX, the current request is the request for the AJAX action, and not the request which built this page. This means when the table is rebuilt via AJAX, the pager and sort settings are lost and you are reset to the first page, without any sorts.

I have found code somewhere to pull the previous request, and get the URL and parameters, but I don’t know how reliable this is or how to implement it:

$current_request = Drupal::request(); $previous_url = $current_request->server->get('HTTP_REFERER'); $previous_request = Request::create($previous_url); // $url_object is a Url with the previous page paramters and URL $url_object = Drupal::service('path.validator')->getUrlIfValid($previous_request->getRequestUri()); 

The problem with the above is:

  1. I don’t know how reliable the HTTP_REFERER will be
  2. I don’t know how to add the previous page request parameters to the current request, so the table is rebuilt properly
  3. If the previous request is NOT the request that built the table/page, I’m stuck again

Is the solution always passing the previous request URL and Params with every AJAX request I make? I feel like someone has solved this somewhere or somehow but I am just lost in this area in Drupal 8, and have been beating my head constantly trying to figure out how to refresh parts of a page in an AJAX request.

EDIT: I am not certain the best place to put the “completed” code, but thanks to 4k4 I’ve put the following together:

  // create url object from route to render link   $my_url = Url::fromRoute('my_module.my_route', array('param' => $value));   // get the current query parameters for our page   $query_options = Drupal::request()->query->all();   // add them to our Url   $my_url->setOption('query', $query_options); 
This article was republished from its original source.
Call Us: 1(800)730-2416

Pixeldust is a 20-year-old web development agency specializing in Drupal and WordPress and working with clients all over the country. With our best in class capabilities, we work with small businesses and fortune 500 companies alike. Give us a call at 1(800)730-2416 and let’s talk about your project.

FREE Drupal SEO Audit

Test your site below to see which issues need to be fixed. We will fix them and optimize your Drupal site 100% for Google and Bing. (Allow 30-60 seconds to gather data.)

Powered by

How to get and apply current page query parameters from current AJAX request

On-Site Drupal SEO Master Setup

We make sure your site is 100% optimized (and stays that way) for the best SEO results.

With Pixeldust On-site (or On-page) SEO we make changes to your site’s structure and performance to make it easier for search engines to see and understand your site’s content. Search engines use algorithms to rank sites by degrees of relevance. Our on-site optimization ensures your site is configured to provide information in a way that meets Google and Bing standards for optimal indexing.

This service includes:

  • Pathauto install and configuration for SEO-friendly URLs.
  • Meta Tags install and configuration with dynamic tokens for meta titles and descriptions for all content types.
  • Install and fix all issues on the SEO checklist module.
  • Install and configure XML sitemap module and submit sitemaps.
  • Install and configure Google Analytics Module.
  • Install and configure Yoast.
  • Install and configure the Advanced Aggregation module to improve performance by minifying and merging CSS and JS.
  • Install and configure Schema.org Metatag.
  • Configure robots.txt.
  • Google Search Console setup snd configuration.
  • Find & Fix H1 tags.
  • Find and fix duplicate/missing meta descriptions.
  • Find and fix duplicate title tags.
  • Improve title, meta tags, and site descriptions.
  • Optimize images for better search engine optimization. Automate where possible.
  • Find and fix the missing alt and title tag for all images. Automate where possible.
  • The project takes 1 week to complete.