javascript - 将值从 JavaScript 传递到 C# 后,如何使用它进行一些自动操作?

标签 javascript c# asp.net

我正在做一个收费系统。客户支付货款的 API 在 JavaScript 中运行:

function jsApiCall()
{
   WeixinJSBridge.invoke(
   'getBrandWCPayRequest',
   <%=wxJsApiParam%>,
    function (res)
    {
        WeixinJSBridge.log(res.err_msg);
        //alert(res.err_code + res.err_desc + res.err_msg);
        switch(res.err_msg)
        {
            case 'get_brand_wcpay_request:cancel':
                document.getElementById("Hidden1").value=1; 
                alert('payment canceled!');     
                break;
            case 'get_brand_wcpay_request:fail':         
                document.getElementById("Hidden1").value=2; 
                alert('payment failed!');
                break;
            case 'get_brand_wcpay_request:ok':     
                document.getElementById("Hidden1").value=3; 
                alert('payment successful!');
                break;
        }
     }
    );
}

我使用以下代码从jsApiCall()获取相应的值。

<input id="Hidden1" type="hidden" runat="server" />

在获得 Hidden1.Value 的值后,我需要立即将一些信息附加到服务器中的文本文件中,但不应要求客户单击任何按钮或执行任何操作。下面的后端代码应该写在哪里?谢谢。

string rst = Hidden1.Value;
switch (rst)
{
    case "1":        
        using (StreamWriter sw = File.AppendText(path))
        {
            sw.WriteLine("1");
        }
        break;
    case "2":
        using (StreamWriter sw = File.AppendText(path))
        {
            sw.WriteLine("2");
        }
        break;
    case "3":
        using (StreamWriter sw = File.AppendText(path))
        {
            sw.WriteLine("3");
        }
        break;
    default:
        Response.Write("failed to update .txt file");
        break;
}     

总之,我想要的是在任何客户成功付款后立即在服务器中记录一些信息。如果这种方法不起作用,我也很感激有人能给我一些建议。

最佳答案

首先在js端写一个函数——这个函数将负责从客户端获取值然后提交给服务器。

要将值提交到服务器,您有 2 个选项(根据您的需要):
- 在表单中隐藏输入并强制该表单从新的 js 函数内部提交。
- 让你的js函数直接通过ajax调用来调用服务器方法

调用这个新的 js 函数可以在您的 switch(res.err_msg) 中或在 onchange event隐藏输入。

示例:

function (res)
    {
        WeixinJSBridge.log(res.err_msg);
        //alert(res.err_code + res.err_desc + res.err_msg);
        switch(res.err_msg)
        {
            case 'get_brand_wcpay_request:cancel':
                document.getElementById("Hidden1").value=1; 
                mySubmitToServer(1);
                alert('payment canceled!');     
                break;
            case 'get_brand_wcpay_request:fail':         
                document.getElementById("Hidden1").value=2; 
                mySubmitToServer(2);
                alert('payment failed!');
                break;
            case 'get_brand_wcpay_request:ok':     
                document.getElementById("Hidden1").value=3; 
                mySubmitToServer(3);
                alert('payment successful!');
                break;
        }
     }
    );
}

function mySubmitToServer(valToSubmit)
{
   // submit the form
   // OR
   // ajax call to server method
}
<form >
<input id="Hidden1" type="hidden" runat="server" />
</form>

关于javascript - 将值从 JavaScript 传递到 C# 后,如何使用它进行一些自动操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50810609/

相关文章:

c# - 使用 GridView1_SelectedIndexChanged 时出错

asp.net - 除非浏览器完全关闭,否则应用程序不会注销 ASP.NET – VB

javascript - 使用 $resource 添加新项目

javascript - Wami Recorder实际上是如何实现的?

javascript - jQuery 文本输入?

c# - 方法的代码块在执行时是在栈中还是堆中?

c# - 从本地 MVC 站点调用本地 WebAPI

javascript - 深度链接无限滚动页面

c# - 在数据库中插入 1,000,000 行时超时(有时)

asp.net - ASP.NET 4.5 Web 窗体中的脚本管理器 - 它有什么作用?你如何使用它的捆绑和缩小?