Currently when form has file element there's no ability to send
ajax_html_ids because it's not possible to serialize that array to send with jQuery Form plugin shipped with core.
ajax_html_ids has array structure that makes ajax requests take more bandwidth by prefixing each value with
ajax_html_ids serialized imploded with space because HTML5 standard does not limits allowed characters for HTML IDs except 'white-space'.
ajax_page_state already has plain structure so this is some kind of standardization for ajax variables.
Also this change help to minimize request size for ajax calls as discussed in
Currently simpletest has no ability to test ajax request properly so only manual testing possible.
Steps to reproduce
- download and enable attached module (ajaxdemo)
- visit /ajaxdemo_test_html_ids and press Get
-- bellow will output count and list of used IDs (they are passed as array)
- visit ajaxdemo_test_html_ids/1 and press Get (file element should appear on form)
-- there would be only one element serialized with ',' (in this case core can't extract IDs used on page)
|PASSED: [[SimpleTest]]: [MySQL] 40,339 pass(es).|
|FAILED: [[SimpleTest]]: [MySQL] 40,373 pass(es), 17 fail(s), and 0 exception(s).|
|FAILED: [[SimpleTest]]: [MySQL] Setup environment: Test cancelled by admin prior to completion.|
|PASSED: [[SimpleTest]]: [MySQL] 40,306 pass(es).|
|PASSED: [[SimpleTest]]: [MySQL] 40,305 pass(es).|