1

在“成功”时,我需要提交data给 PayPal。我知道这$.post('https://www.paypal.com/cgi-bin/webscr', data);是错误的,因为我需要它提交,就好像那是表单操作一样,进入带有表单值的 PayPal 页面。所有数据都在返回的 JSON 数据中存储并正确格式化。我用alert(data.cmd). 我只是不知道如何从这里模拟 HTML POST 动作。

function process(plan_id) {
        var data = {'plan_id' : plan_id};
        $.ajax({
                type: "POST",
                url: "process_paypal.php",
                data: data,
                dataType: "json",
                success: function (data) { 
                alert(data.cmd);
                    $.post('https://www.paypal.com/cgi-bin/webscr', data);
            },
             error: function(jqXHR, textStatus, errorThrown) { 
                console.log(arguments); 
                alert(jqXHR + '-' + textStatus + '-' + errorThrown);
                return false;        
            }
        });
    }
    </script>
4

2 回答 2

1

您可以通过以下方式将 json 对象转换为 key1=value1&key2=value2.. 等参数字符串

var result = decodeURIComponent($.param(data));

然后您可以将此结果传递给贝宝

$.ajax({
    type:'POST',
    ...
    data: result,
    ...
});
于 2012-10-09T17:31:13.347 回答
1

在将数据发送到 PayPal 之前,您需要使用$.serialize()序列化数据,如下所示:

var data = {'plan_id' : plan_id};
$.ajax({
    ...
    data: $(data).serialize(),
    ...
});

通过序列化数据,您可以将其从对象转换为 PayPal 服务可以读取的编码字符串。

我希望这有帮助!

于 2012-10-09T17:33:05.547 回答