在 IE 中导致问题的表单名称属性
Form name attribute causing the issue in IE
当我将表单值提交到 2check out 支付网关时,我收到 PE101 错误(即要求值未通过)。
调试我的代码后,我开始知道 PE101 错误仅在 IE 中导致问题,因为名称属性具有空值。
相同的代码在 Chrome 中工作,但当我在 IE 中尝试时,Edge 导致了问题。
谁能告诉我为什么 2check out 支付网关不采用来自 IE 的没有名称属性的表单值。
$("#idNavPremimum").click(function() {
alert("k");
$("input[name*='quantity']").val("88");
$("input[name*='li_0_price']").val("99");
$("input[name*='email']").val("uday.a@gmail.com");
$("#payment").submit();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="payment" action='https://sandbox.2checkout.com/checkout/purchase' method='post'>
<div class="form-group">
<label for="quantity" class="col-md-1 control-label">No. of users</label>
<div class="col-md-2">
<!----------------------This control causing the issue--------------------->
<input type="text" maxlength="3" class="form-control specialCharRestrict" id="quantity" name="">
<!----------------------This control causing the issue ends--------------------->
</div>
<label for="ddlPriceCalcMonths" class="col-md-1 control-label">No. of months</label>
<div class="col-md-2">
<select id="ddlPriceCalcMonths" class="form-control clsPriceValDetails" disabled>
<option value="1">1</option>
<option value="3">3</option>
<option value="6">6</option>
<option value="12">12</option>
</select>
</div>
<label for="txtTotalPrice" class="col-md-1 control-label">Total price</label>
<div class="col-md-2">
<input type="text" class="form-control clsPriceVal" id="txtTotalPrice" readonly/>
</div>
<!--<input type='hidden' name='sid' value='901286127' />-->
<input type='hidden' name='sid' value='901286127' />
<input type='hidden' name='mode' value='2CO' />
<input type="hidden" name="currency_code" value="USD" />
<input type='hidden' name='li_0_type' value='product'>
<input type='hidden' name='li_0_name' value='Webstation Premium'>
<input type='hidden' name='li_0_price' value='20'>
<input type='hidden' name='li_0_quantity' value='2'>
<input type='hidden' name='li_0_tangible' value='N'>
<input type='hidden' name='email' value='uday.a@gmail.com'>
<input type='hidden' name='fixed' value='Y' />
<input type='hidden' name='x_receipt_link_url' value='http://webstation.osmosystems.com/' />
</div>
</form>
<div class="form-group">
<button class="button-style btnPos" type='button' data-toggle="modal" data-target="#divwebstationForm" id="idNavPremimum"><i class="fa fa-android fa-fw"></i> BUY NOW <i class="fa fa-cloud-download fa-fw"></i></button>
</div>
这是由于 IE 执行表单行为所致。
根据 MS specs name
参数对于文本等输入是必需的。
提交表单时,IE 会考虑没有名称 属性 的输入 - 这意味着这些输入包含在请求的 Content-Length
header 中,并且 FormData
包含空行。
另一方面 Chrome,如果他们遇到没有 name
的输入,他们就会忽略它。
总而言之 - 要使其在 IE 上运行,您需要输入 name
属性.
当我将表单值提交到 2check out 支付网关时,我收到 PE101 错误(即要求值未通过)。 调试我的代码后,我开始知道 PE101 错误仅在 IE 中导致问题,因为名称属性具有空值。 相同的代码在 Chrome 中工作,但当我在 IE 中尝试时,Edge 导致了问题。 谁能告诉我为什么 2check out 支付网关不采用来自 IE 的没有名称属性的表单值。
$("#idNavPremimum").click(function() {
alert("k");
$("input[name*='quantity']").val("88");
$("input[name*='li_0_price']").val("99");
$("input[name*='email']").val("uday.a@gmail.com");
$("#payment").submit();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="payment" action='https://sandbox.2checkout.com/checkout/purchase' method='post'>
<div class="form-group">
<label for="quantity" class="col-md-1 control-label">No. of users</label>
<div class="col-md-2">
<!----------------------This control causing the issue--------------------->
<input type="text" maxlength="3" class="form-control specialCharRestrict" id="quantity" name="">
<!----------------------This control causing the issue ends--------------------->
</div>
<label for="ddlPriceCalcMonths" class="col-md-1 control-label">No. of months</label>
<div class="col-md-2">
<select id="ddlPriceCalcMonths" class="form-control clsPriceValDetails" disabled>
<option value="1">1</option>
<option value="3">3</option>
<option value="6">6</option>
<option value="12">12</option>
</select>
</div>
<label for="txtTotalPrice" class="col-md-1 control-label">Total price</label>
<div class="col-md-2">
<input type="text" class="form-control clsPriceVal" id="txtTotalPrice" readonly/>
</div>
<!--<input type='hidden' name='sid' value='901286127' />-->
<input type='hidden' name='sid' value='901286127' />
<input type='hidden' name='mode' value='2CO' />
<input type="hidden" name="currency_code" value="USD" />
<input type='hidden' name='li_0_type' value='product'>
<input type='hidden' name='li_0_name' value='Webstation Premium'>
<input type='hidden' name='li_0_price' value='20'>
<input type='hidden' name='li_0_quantity' value='2'>
<input type='hidden' name='li_0_tangible' value='N'>
<input type='hidden' name='email' value='uday.a@gmail.com'>
<input type='hidden' name='fixed' value='Y' />
<input type='hidden' name='x_receipt_link_url' value='http://webstation.osmosystems.com/' />
</div>
</form>
<div class="form-group">
<button class="button-style btnPos" type='button' data-toggle="modal" data-target="#divwebstationForm" id="idNavPremimum"><i class="fa fa-android fa-fw"></i> BUY NOW <i class="fa fa-cloud-download fa-fw"></i></button>
</div>
这是由于 IE 执行表单行为所致。
根据 MS specs name
参数对于文本等输入是必需的。
提交表单时,IE 会考虑没有名称 属性 的输入 - 这意味着这些输入包含在请求的 Content-Length
header 中,并且 FormData
包含空行。
另一方面 Chrome,如果他们遇到没有 name
的输入,他们就会忽略它。
总而言之 - 要使其在 IE 上运行,您需要输入 name
属性.