我正在使用jQuery serialize()和window.open函数将表单数据获取到另一个页面,该页面将根据该数据打印出文件。
在重定向之前,URL看起来不错(控制台记录了序列化的URL):
renter_postal_address%5D=×%5Bstart_date%5D=17.06.2019×%5Bstart_hours%5D=10×%5Bstart_minutes%5D=56×%5Bend_date%5D=17.06.2019×%5Bend_hours%5D=11×%5Bend_minutes%5D=56
到达所需页面后,URL如下所示(仅适用于I.E):
renter_postal_address%5D=×%5Bstart_date%5D=17.06.2019×%5Bstart_hours%5D=10×%5Bstart_minutes%5D=56×%5Bend_date%5D=17.06.2019×%5Bend_hours%5D=11×%5Bend_minutes%5D=56
Google Chrome浏览器上的网址:
?act=rent.fillBookingContractTemplate&item_id=1&data=action=issue_item&item_id=&data%5Bcontract_no%5D=1560762473&data%5Bcurrent_unit_id%5D=&data%5Brenter_personal_code%5D=&data%5Brenter_name%5D=&data%5Brenter_phone%5D=&data%5Brenter_email%5D=&data%5Brenter_postal_address%5D=×%5Bstart_date%5D=17.06.2019×%5Bstart_hours%5D=12×%5Bstart_minutes%5D=07×%5Bend_date%5D=17.06.2019×%5Bend_hours%5D=13×%5Bend_minutes%5D=07&data%5Breturned_to_unit_id%5D=0&data%5Bcountry%5D=Eesti&data%5Breceived_helmets%5D=&data%5Bdocument_id%5D=&data%5Bdocument_issue_date%5D=&data%5Bdocument_valid_to%5D=&data%5Blicence_id%5D=&data%5Blicence_issue_date%5D=&data%5Blicence_valid_to%5D=&data%5Bissuing_comment%5D=
Internet Explorer(最新版本)上的URL:
?act=rent.fillBookingContractTemplate&item_id=1&data=action=issue_item&item_id=&data%5Bcontract_no%5D=1560762453&data%5Bcurrent_unit_id%5D=&data%5Brenter_personal_code%5D=&data%5Brenter_name%5D=&data%5Brenter_phone%5D=&data%5Brenter_email%5D=&data%5Brenter_postal_address%5D=×%5Bstart_date%5D=17.06.2019×%5Bstart_hours%5D=12×%5Bstart_minutes%5D=07×%5Bend_date%5D=17.06.2019×%5Bend_hours%5D=13×%5Bend_minutes%5D=07&data%5Breturned_to_unit_id%5D=0&data%5Bcountry%5D=Eesti&data%5Breceived_helmets%5D=&data%5Bdocument_id%5D=&data%5Bdocument_issue_date%5D=&data%5Bdocument_valid_to%5D=&data%5Blicence_id%5D=&data%5Blicence_issue_date%5D=&data%5Blicence_valid_to%5D=&data%5Bissuing_comment%5D=
再现错误的代码示例:
<?php
if (isset($_GET)) {
var_dump($_GET);
}
?>
<script src="https://code.jquery.com/jquery-3.4.1.min.js" crossorigin="anonymous"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="></script>
<form method="POST" id="item-issuing-form">
<input type="hidden" name="action" value="issue_item">
<input type="hidden" name="item_id" value="275">
<input type="hidden" name="data[contract_no]" value="1560836285">
<input type="hidden" name="data[current_unit_id]" value="664">
<input name="data[renter_personal_code]">
<input name="data[renter_name]">
<input name="data[renter_phone]">
<input name="data[renter_email]">
<input name="data[renter_postal_address]">
<input name="times[start_date]">
<select name="times[start_hours]"></select>
<select name="times[start_minutes]"></select>
<input name="times[end_date]">
<select name="times[end_hours]"></select>
<select name="times[end_minutes]"></select>
<select name="data[returned_to_unit_id]"></select>
<select name="data[country]"></select>
<input name="data[received_helmets]">
<input name="data[document_id]">
<input name="data[document_issue_date]">
<input name="data[document_valid_to]">
<input name="data[licence_id]">
<input name="data[licence_issue_date]">
<input name="data[licence_valid_to]">
<textarea name="data[issuing_comment]"></textarea>
<button type="button" class="go-test">Go</button>
</form>
<script>
$('.go-test').on('click', function () {
window.open('index.php?item_id=275&data=' + $('#item-issuing-form').serialize(), '_blank');
});
</script>