diff --git a/core/includes/common.inc b/core/includes/common.inc index c9913a2..db4c632 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -3518,7 +3518,8 @@ function drupal_html_id($id) { // requested id. $_POST['ajax_html_ids'] contains the ids as they were // returned by this function, potentially with the appended counter, so // we parse that to reconstruct the $seen_ids array. - foreach ($_POST['ajax_html_ids'] as $seen_id) { + $ajax_html_ids = explode(' ', $_POST['ajax_html_ids']); + foreach ($ajax_html_ids as $seen_id) { // We rely on '--' being used solely for separating a base id from the // counter, which this function ensures when returning an id. $parts = explode('--', $seen_id, 2); diff --git a/core/misc/ajax.js b/core/misc/ajax.js index 94bfb89..8e935ed 100644 --- a/core/misc/ajax.js +++ b/core/misc/ajax.js @@ -284,10 +284,13 @@ Drupal.ajax.prototype.beforeSerialize = function (element, options) { // Prevent duplicate HTML ids in the returned markup. // @see drupal_html_id() - options.data['ajax_html_ids[]'] = []; - $('[id]').each(function () { - options.data['ajax_html_ids[]'].push(this.id); - }); + var ids = document.querySelectorAll('[id]'); + var ajaxHtmlIds = []; + for (var i = 0, il = ids.length; i < il; i++) { + ajaxHtmlIds.push(ids[i].id); + } + // Join IDs to minimize request size. + options.data.ajax_html_ids = ajaxHtmlIds.join(' '); // Allow Drupal to return new JavaScript and CSS files to load without // returning the ones already loaded. diff --git a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php index 10501d0..98feb67 100644 --- a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php +++ b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php @@ -1284,9 +1284,12 @@ abstract class WebTestBase extends TestBase { $extra_post .= '&' . urlencode($key) . '=' . urlencode($value); } } + $ajax_html_ids = array(); foreach ($this->xpath('//*[@id]') as $element) { - $id = (string) $element['id']; - $extra_post .= '&' . urlencode('ajax_html_ids[]') . '=' . urlencode($id); + $ajax_html_ids[] = (string) $element['id']; + } + if (!empty($ajax_html_ids)) { + $extra_post .= '&' . urlencode('ajax_html_ids') . '=' . urlencode(implode(' ', $ajax_html_ids)); } if (isset($drupal_settings['ajaxPageState'])) { $extra_post .= '&' . urlencode('ajax_page_state[theme]') . '=' . urlencode($drupal_settings['ajaxPageState']['theme']);