diff --git a/core/misc/ajax.js b/core/misc/ajax.js index b63bc03..53e3c77 100644 --- a/core/misc/ajax.js +++ b/core/misc/ajax.js @@ -427,15 +427,19 @@ ajax.options.data.dialogOptions = element_settings.dialog; } - // Ensure that we have a valid URL by adding ? when no query parameter is - // yet available, otherwise append using &. - if (ajax.options.url.indexOf('?') === -1) { - ajax.options.url += '?'; + // Append WRAPPER_FORMAT to the URL as a query parameter or replace it's + // value if it is already present. + var queryParameter = Drupal.ajax.WRAPPER_FORMAT + '=drupal_' + (element_settings.dialogType || 'ajax'); + if (ajax.options.url.indexOf(Drupal.ajax.WRAPPER_FORMAT) === -1) { + // Ensure that we have a valid URL by adding ? when no query parameter is + // yet available, otherwise append using &. + ajax.options.url += (ajax.options.url.indexOf('?') === -1) ? '?' : '&'; + ajax.options.url += queryParameter; } else { - ajax.options.url += '&'; + var regexPattern = new RegExp(Drupal.ajax.WRAPPER_FORMAT + '=[^&]*', 'i'); + ajax.options.url = ajax.options.url.replace(regexPattern, queryParameter); } - ajax.options.url += Drupal.ajax.WRAPPER_FORMAT + '=drupal_' + (element_settings.dialogType || 'ajax'); // Bind the ajaxSubmit function to the element event. $(ajax.element).on(element_settings.event, function (event) {