asp问题,如何获取post后获得的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp问题,如何获取post后获得的数据相关的知识,希望对你有一定的参考价值。

<FORM METHOD="POST" ACTION="http://api.xinnet.com/domain/api.gb?method=check">
<input name="name" value="abcderg" type="text">
<input name="enc" value="G" type="text">
<input name="suffix" value=".cn" type="text">
<input name="client" value="agent43112" type="text">
<INPUT TYPE="submit" VALUE="submit" NAME="Submit"></TD>
</FORM>

提交后返回
num=1&enc=G&name1=abcderg.cn&chk1=100
但值是在
http://api.xinnet.com/domain/api.gb?method=check
这个地址下的,我该如何取得该值
提交后地址就跳到
http://api.xinnet.com/domain/api.gb?method=check
我又不能操作xinnet.com上的东西
不可能用request啊

//Query Ajax POST提交数据

$.post("url",data,callback);
例: $.post("test.ashx","uname":$("#txtuname").val(),"pwd":$("#txtpwd").val(),function(data,status)
    if(status!="success") return; 
    alert(data);
);


//后台接收数据

string strUname = context.Request.Params.Get("uname");
string strPwd = context.Request.Params.Get("pwd");
if(!string.IsNullOrEmpty(strUname)&&!string.IsNullOrEmpty(strPwd))

  //需要的操作
参考技术A 那你就不要让他提交到那了呀改下form就行了
<FORM METHOD="POST" ACTION="你要提交到的页面">
参考技术B 试一试ASP的AJAX方法:
<%
function getHTTPPage(url)
on error resume next
dim http
set http = createobject("MSXML2.XMLHTTP")
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then
exit function
end if
getHTTPPage=bytes2BSTR(Http.responseBody)
set http=nothing
if err.number<>0 then err.Clear
End function

Function bytes2BSTR(vIn)
dim strReturn
dim i,ThisCharCode,NextCharCode
strReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn&Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn&Chr(CLng(ThisCharCode)*&H100+CInt(NextCharCode))
i = i + 1
End If
Next
bytes2BSTR = strReturn
End Function

Response.Write getHTTPPage("http://api.xinnet.com/domain/api.gb?method=check&name=abcderg&enc=G&suffix='.cn'&client=agent43112")'输出想要得到页面的结果
%>

然后根据你的需要处理一下结果就OK了本回答被提问者和网友采纳
参考技术C Request.Form("abcderg") 参考技术D <%
name2=request("name")'接值
response.write name2 '输出值
%>

下面的依次类推

呵呵````

如何在 asp.net webform 中获取 js POST?

【中文标题】如何在 asp.net webform 中获取 js POST?【英文标题】:how to get js POST in asp.net webform? 【发布时间】:2013-08-05 00:30:30 【问题描述】:

我知道这是一个基本问题,但我没有在网络表单上练习。我是第一次使用 Stripe.js,想和 stripe.net 结合使用来处理客户端。这是客户端代码:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="StripePage.aspx.cs" Inherits="StripePage.StripePage" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
<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
        $('#payment-form').submit(function (event) 
            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 = $('#payment-form');

            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>

<form method="POST" id="paymentForm" runat="server">
    <span class="payment-errors" runat="server"></span>

    <div class="form-row">
        <label>
            <span>Card Number</span>
            <br />
            <input id="number" type="text" data-stripe="number" clientidmode="Static" />
            <input type="text" size="20" data-stripe="number" runat="server" />
        </label>
    </div>

    <div class="form-row">
        <label>
            <span>CVC</span>
            <br />
            <input type="text" size="4" data-stripe="cvc" runat="server" />
        </label>
    </div>

    <div class="form-row">
        <label>
            <span>Expiration (MM/YYYY)</span>
            <br />
            <input type="text" size="2" data-stripe="exp-month" runat="server" />
        </label>
        <br />
        <input type="text" size="4" data-stripe="exp-year" runat="server" />
    </div>
    <asp:Button ID="submit" ClientIDMode="Static" runat="server" Text="SubmitPayment" OnClick="submit_Click" />
</form>
</asp:Content>

在 JS 中的最后一次调用创建了一个 JSON 对象,我想知道如何在 C# 页面上单击按钮:

protected void submit_Click(object sender, EventArgs e)

....

我想要执行 javascript 实现以避免必须执行 PCI 合规性。我是在错误地接近这个吗?是否应该全部由 Stripe.net 来处理所有内容,并完全跳过 js?或者如果这是正确的,我怎样才能在按钮点击事件中获取表单发布数据?

【问题讨论】:

这是我们推荐的方法。您的表单将像普通表单一样由 JavaScript 提交,就像您的用户在没有 JS 的情况下单击“提交”一样。所以你可以像正常的表单提交一样处理它。 如果它的 ASP.NET 网络表单,您可能希望在初始加载中添加一个隐藏文本字段并对其 ClientID 进行硬编码。然后在您的条带回调中使用 JQuery 将该控制值设置为您的令牌并触发您的 POSTBACK 事件,以便 ASP.NET 可以重新绑定并在服务器端找到它。 【参考方案1】:

感谢 cmets 中的提示。在仔细阅读了互联网和拉头发之后,我走了一会儿,然后带着这个解决方案回来了。

    使按钮只是一个标准的 html 输入(不是 asp:Button) 在 Page_Load 事件中获取通过 JavaScript 发送的回发信息,如下所示

代码背后:

protected void Page_Load(object sender, EventArgs e)

    if (IsPostBack)
    
        StripeConfiguration.SetApiKey("[API Secret Key");
        NameValueCollection nvc = Request.Form;
        string amount = nvc["amount"];
        var centsArray = amount.Split('.');
        int dollarsInCents = Convert.ToInt32(centsArray[0]) * 100;
        int remainingCents = Convert.ToInt32(centsArray[1]);
        string tokenId = nvc["stripeToken"];

        var tokenService = new StripeTokenService();
        StripeToken stripeToken = tokenService.Get(tokenId);


        var myCharge = new StripeChargeCreateOptions
        
            TokenId = tokenId, 
            AmountInCents = dollarsInCents + remainingCents,
            Currency = "usd"
        ;
        var chargeService = new StripeChargeService();
        StripeCharge stripeCharge = chargeService.Create(myCharge);
    

似乎使用 NameValueCollection(位于 System.Collections.Specialized 命名空间中)使我能够通过变量名称从 Request.Form 中获取我需要的内容。由于我新建了变量名称,因此只需获取它们,然后按照 Stripe .NET 库文档获取令牌并处理付款。

【讨论】:

【参考方案2】:

我只想对答案发表评论,但目前还不允许。所以,这并不是真正的答案,更多的是对 OP 自己的调查结果的回应。

我正在使用 Stripe.js 做同样的事情。我可以简单地使用 Request.Form 获取 stripeToken,并以通常的方式在代码隐藏中获取所有其他非 c/c 相关字段(例如 int Total = PaymentTotal.Value;);但我要注意的不是获取数据,而是您必须在 Page_Load(或在页面生命周期的某个后期)上处理它,因为提交按钮的 onclick事件实际上从未被触发,因为表单实际上是使用 js 而不是按钮提交的。

因此,从字面上看,有点回答原始问题,您实际上无法在按钮单击事件中获取数据,而无需在回发时手动触发该事件(我猜测)。

如果他们来这里是为了让 Stripe 和 .NET 协同工作,希望能节省一些时间来弄清楚这一点。

【讨论】:

同意。实际上,我从一天开始就在逃避同样的问题。那么这是一种仅在页面加载上而不是在代码后面的按钮单击事件中处理此问题的方法吗?因为我有近 50 个字段以及 Stripe 的必填字段,用于内部用户注册过程。仅在单击按钮时似乎可行。否则,每当回发发生时,它都会执行条带化过程。补救措施可能是在按钮单击时设置标志,并在 ispostback 检查页面加载时与按钮单击标志一起处理它。

以上是关于asp问题,如何获取post后获得的数据的主要内容,如果未能解决你的问题,请参考以下文章

asp.net获取某一个文件夹下所有的子文件夹

Angular 2:从订阅 http.post 获得响应后如何调用函数

如何在 asp.net webform 中获取 js POST?

php 订阅后如何获取 PayPal 定期付款数据?

我如何获得传递使用id获取元素,而不是$ _POST ['']的名称

利用python的requests库如何获取post后服务器返回的headers信息?