如何将javascript方法(JSON对象)的结果发送到asp.net网络表单上的代码后面
本文关键字:net asp 网络 表单 代码 结果 方法 javascript JSON 对象 | 更新日期: 2023-09-27 18:26:17
我有一段javascript,它处理我的一些表单数据,结果需要提交到我的代码后面,这样我就可以将其映射到对象并保存到数据库:
这是表格:
<form method="POST" id="paymentForm">
<span class="payment-errors" runat="server"></span>
<div>
<label>
<span>Card Number</span>
<br />
<input type="text" size="20" data-stripe="number" runat="server" placeholder="1111222233334444" />
</label>
</div>
<div>
<label>
<span>CVC</span>
<br />
<input type="text" size="4" data-stripe="cvc" runat="server" placeholder="123"/>
</label>
</div>
<div>
<label>
<span>Expiration (MM/YYYY)</span>
<br />
<input type="text" size="2" data-stripe="exp-month" runat="server" placeholder="01"/>
</label>
<br />
<input type="text" size="4" data-stripe="exp-year" runat="server" placeholder="2020"/>
</div>
<button type="submit">Submit Payment</button>
</form>
这里是js位:
<script type="text/javascript">
// This identifies your website in the createToken call below
// You need to put your real publish key here.
Stripe.setPublishableKey('pk_test_1nDJ3hA1Mv2Sy9bUoYcBMXmm');
// ...
// I am using jquery to process the payment. It knows what form to
// process it on based on the name 'payment-form'
jQuery(function ($) {
//payment submission
$('#ctl01').submit(function (event) {
alert('In .submit()');
var $form = $(this);
// Disable the submit button to prevent repeated clicks
$form.find('button').prop('disabled', true);
Stripe.createToken($form, stripeResponseHandler);
// Prevent the form from submitting with the default action
return false;
});
//if there is a error, it is displayed on the page if there was
//no error this is where it gets sent to the server.
var stripeResponseHandler = function (status, response) {
var $form = $('#ctl01');
if (response.error) {
// Show the errors on the form
$form.find('.payment-errors').text(response.error.message);
$form.find('button').prop('disabled', false);
} else {
// token contains id, last4, and card type
var token = response.id;
// Insert the token into the form so it gets submitted to the server
$form.append($('<input type="hidden" name="stripeToken" />').val(token));
// and submit
$form.get(0).submit();
}
};
});
</script>
所以js创建了一个Stripe令牌,但当我点击提交时,我不知道如何让它击中我的代码。页面只是闪烁,什么都没有。
我试着把这个按钮变成一个asp.net按钮,并把一个事件绑定到它上,这没什么好处。
我是否应该在Page_Load()中做一些事情,以便在页面的POST中包含这些数据?
我看到了两个即时选项,这取决于你想在服务器端代码中做什么:
- 手动调用
__doPostBack
JavaScript函数以导致服务器端回发。如果您想与页面上的ASP.NET服务器控件进行交互,我建议您使用这种方法
这里是另一个StackOverflow问题,详细介绍了如何在__doPostBack中发送多个参数。
- 调用ASP.NET AJAX页面方法,该方法本质上是ASP.NET页面内部托管的独立web服务。如果您只想调用一些服务器端逻辑(即从数据库中保存或检索数据),但不需要页面本身的实例,我建议您使用这种方法,因为这是一个异步操作,并且没有任何页面控件可用。这对于将数据发送到服务器并获取jQuery可以处理的数据非常有用
以下是如何使用jQuery直接调用ASP.NET AJAX页面方法。