Jquery提交表单并将某些值POST到另一个脚本

时间:2011-11-20 21:30:43

标签: jquery

我在页面上有一个付款按钮,用于向付款处理商提交信息,在同一页面上有一个表单,其中包含一些自定义字段,可在您提交时更新联系信息。

我使用提交付款按钮的jquery脚本,同时将表单的值发送到updatecontact php脚本。

但它没有用,它没有将值发布到updatecontact php脚本。

请查看下面的代码,看看你是否能发现我做错了什么。

http://jsfiddle.net/QunPb/1/

代码所在的网址:http://ofertasclaras.com/envio.php

4 个答案:

答案 0 :(得分:2)

您正在尝试创建一个包含多个提交操作的表单。

cURL无效,因为您的服务器发布到dineromail,而不是访问者的浏览器(除非您真的希望服务器进行购买?);)

相反,使用jQuery向表单提交添加ajax请求。通过使ajax请求不是异步的,它将在使用“return true”提交表单的主要操作(dineromail)之前完成该请求。

$(document).ready(function() {
  $('#dinero-form').submit(function() {
    $.ajax({  type: "POST", async: false, url: 'http://ofertasclaras.com/actualizar.php',
              data: { email: $('#email').val(),nombrecompleto: $('#nombrecompleto').val(),  direccion: $('#direccion').val(), ciudad: $('#ciudad').val(), provincia: $('#provincia').val(), codigopostal: $('#codigopostal').val(), casaodepto: $('#casaodepto').val(), gelypilas: $('#gelypilas').val() }
    });
    return true;
  });
});

答案 1 :(得分:0)

在你的小提琴中,开始关闭的选择器将不匹配任何东西:

$('#dinero-form')

不确定这是否是您网页中的唯一问题,但您可能需要像这样更新form标记:

<form action='https://argentina.dineromail.com/Shop/Shop_Ingreso.asp'
  method='post' id='dinero-form'>

答案 2 :(得分:0)

脚本附在页面上;请求与发出请求的脚本的页面相关联。提交表单时,新页面将替换旧表单。这可能会中断请求。

您可以在服务器端执行,而不是使用AJAX提交请求客户端。常见的方法是创建服务类(使用cURL实现),以便您可以使用OO接口访问HTTP服务。服务方法成为实例方法。请求参数作为数组或您编写的某个请求类的实例传递给服务方法。

答案 3 :(得分:0)

这种逻辑流程是否适用于您的情况:

1)使用AJAX捕获表单帖子 2)将您的所需数据发送到您的网址并在表单中返回false 3)当您的页面返回成功时,将表单提交到支付网关页面

// prime your element with a state that you can check on later
// in thise case 'captured' via the .data() method, set to false (not yet captured by your script)
$('#dinero-form').data('captured',false).submit(function(){
 // bind to the submit event of the form and return false by default unless
 // captured is true, which means your form has been captured by your page
 // and you're happy to pass the form data on to the gateway (be sure this is over ssl on your own server, etc, as necessary for appropriate security)
 var $this = $(this), data = $this.serialize(), captured = $this.data('captured');

 // if not captured, send to your script
 if(false === captured) {
   $.post('/url-for-your-data/',data,function(response){
     // change this to your url where you want to capture it
     // if you are returning json, use something like the below (with your own values)
     // to determine if it was successful or not at storing the data you want to capture
     if(response.success) {
       // if it succeeded, then tell the form it has been captured and then trigger
       // the original submit to the form action defined in your form
       $this.data('captured',true);
       $this.trigger('submit');
     } else {
       // handle form validation here
     }
   },'json');

   // return false so the form doesn't submit and you can wait for the response
   // usually a good idea to show a loading/activity graphic at this point if it's not quick
   return false;
 } else {
   // otherwise it was captured, and you can send to the gateway now
   return true;
 }
});

**警告**:虽然这可能在启用JavaScript时有效,但您可以先将其提交到您的页面,捕获它并设置任何会话变量,然后使用唯一ID将其发送到您的网关。以某种方式进行交易,以便您可以在用户返回您的网站时进行匹配。 (如果那是合适的。)

**警告**:您应该始终通过SSL发送个人信息,因此请确保您已将此类事情记录下来,并确保您的用户知道他们的数据已保护到您的服务器以及他们正在使用的网关:)