2012-10-09 93 views
1

關於'成功'我需要向PayPal提交data。我知道$.post('https://www.paypal.com/cgi-bin/webscr', data);是錯誤的,因爲我需要它提交,就好像那是表單操作一樣,用表單值轉到PayPal頁面。所有的數據都存儲在返回的JSON數據中並正確格式化。我用alert(data.cmd)進行了檢查。我只是不知道如何模仿這裏的HTML POST動作。如何在AJAX中使用JSON編碼表單值POST 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> 
+0

爲什麼不只是處理您的PHP文件中的處理和提交,然後收集並返回您的應用程序的貝寶迴應? –

+0

是的,我想過,但如果更新數據庫時出現問題,我需要這個頁面返回一個錯誤。 – frankie

回答

1

您需要使用$.serialize()將您的數據序列化,然後將其發送到貝寶,如下所示:

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

通過序列化您將數據從對象轉換爲PayPal服務可以讀取的編碼字符串。

我希望這有助於!

+0

process_paypal.php包含所有表單數據。我只爲用戶選擇的選項傳遞一個變量。 – frankie

1

您可以通過以下方式

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

JSON對象轉換爲參數字符串像鍵1 =值&鍵2 =值。然後你可以通過這個結果給PayPal

$.ajax({ 
    type:'POST', 
    ... 
    data: result, 
    ... 
}); 
+0

所以這會在'成功'塊? '成功:功能(數據){var。result = decodeURIComponent($。param(data)); \t類型: 'POST', \t URL: 'https://www.paypal.com/cgi-bin/webscr', \t數據:結果, \t成功:功能(數據){ \t \t } '如何讓實際頁面跳轉到PayPal,就好像表單更傳統地提交(HTML)一樣。 – frankie

+0

沒有讓你完全'傳統的HTML'? ajax表單提交與html表單提交相同,但差異只有ajax是異步的。 – GBD

+0

我得到'傳統'的HTML,但行爲是AJAX,因爲PayPal頁面未加載。我想我必須通過AJAX/Jquery從HTML內提交

才能使其工作? – frankie