【问题标题】:Submit form to both code behind and third party url?将表单提交给后面的代码和第三方 url?
【发布时间】:2013-10-24 21:13:07
【问题描述】:

我有一个旧版应用需要更改以适应新的支付处理器。 该应用程序是 Asp.Net。 在不重建应用程序(不在预算内)的情况下,我需要采用最终表单并将其中的信息保存在后面的代码中,就像现在一样,然后我需要将相同的表单提交给第三方 url。理想情况下,一键推送给最终用户。

我正在以一种完全空白的方式做到这一点。有什么建议吗?


忘了提到 JQuery 和 javascript 都是解决方案的有效工具。

【问题讨论】:

  • 两种形式是否完全相同?我的意思是,您只需要更改表单中的操作 URL?
  • 只是为了确保... 表单目前以传统的、仅 HTML 的方式提交?我的意思是,那里没有 AJAX,对吧?
  • Javascript 和 Jquery 都在桌面上。
  • 正常提交到Asp.Net代码后面。

标签: asp.net


【解决方案1】:

您可以创建一个绑定到表单提交按钮的单击事件或表单的提交事件的 javascript 函数。该功能需要防止触发默认表单提交。使用jQuery序列化表单数据,并创建一个同步的AJAX请求将数据提交给第三方。 ajax提交完成后,就可以触发表单提交到code-behind。如果 ajax 未能正确提交,您可以选择将表单提交中止到代码隐藏。

您可能需要考虑 XSS 安全性,因此请查看跨域资源共享和 Access-Control-Allow-Origin 标头。

另一种选择是让代码隐藏充当 http 客户端并将表单数据提交给第三方。

【讨论】:

    【解决方案2】:

    所以目前它正在通过代码保存结果?好吧,您可以通过在页面上放置一些 javascript 来破解它,该页面读取表单值并发布它们(例如使用 jquery),然后再进行实际的 asp 发布。

    编辑(这样的事情可能会有所帮助(在某些情况下):

    //change the action of the form (you could just change in code or this
    $('#myform').attr('action','http://newpaymentproc.com/me/');
    
    //override the default submit
    $('#myformsubmitbutton').click(function(){
        //extract the form data somehow (depends on form)
        var formObj;
        $.each($('#myform').find('input').serializeArray(), function(i, field)   {
            formObj[field.name] = field.value;
        });
    
        //post to old place
        $.post('/old_current.asp', formObj).then(
            //after posting to old place and getting response...
            //submit form to new payment processor
            $('#myform').submit()
    
        );
    
        // Cancel the actual form submit click to give time for post
        return false;
    });
    

    另一种方法是让遗留代码(在提交后)吐出一个包含数据的表单和一些 javascript 以在页面加载时触发提交。

    【讨论】:

    • 不是为了挫败你的努力,但这个问题在它的任何地方都没有提到 jQuery 或 javascript。
    • 如果表单是通过普通的 POST 提交的,它将不起作用,因为浏览器会被重定向到第一个提交页面的目标页面。
    • @jwatkins 我建议通过 ajax 发布到一个位置(旧位置),当收到 ok 后,发布并重定向到新位置。我认为这是可能的。对 ajax 请求的响应将是提交时用来显示(如果有)的“页面 html”。
    【解决方案3】:

    原始过程完成后,只需获取提交的表单数据并将其推送到您正在使用的任何 URL。它需要对原始应用程序进行最少的修改。

    我没有代码可以继续,所以我没有代码可以提供。希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多