Javascript document.form.submit 不工作

新手上路,请多包涵

我使用 JavaScript 创建了一个表单并尝试提交它,但它显示错误消息 document.payment 为空。请帮我

 var output_data = '<form   id ="payment" name="payment" method="POST" action="https://checkout.google.com/api/checkout/v2/checkoutForm/Merchant/922635804601464" accept-charset="utf-8">'
                                output_data += '<input type="hidden" name="item_name_1" value="Peanut Butter">';
                                output_data +='<input type="hidden" name="item_description_1" value="Chunky peanut butter.">';
                                output_data += '<input type="hidden" name="item_quantity_1" value="1">';
                                output_data += '<input type="hidden" name="item_price_1" value="3.99">';
                                output_data += '<input type="hidden" name="item_currency_1" value="USD">';
                                output_data += '<input type="hidden" name="ship_method_name_1" value="UPS Ground">';
                                output_data += '<input type="hidden" name="ship_method_price_1" value="10.99">';
                                output_data += '<input type="hidden" name="ship_method_currency_1" value="USD">';
                                output_data += '<input type="hidden" name="tax_rate" value="0.0875">';
                                output_data += '<input type="hidden" name="tax_us_state" value="NY">';
                                output_data += '<input type="hidden" name="_charset_">';
                                output_data += '</form>';
                                //alert(output_data);
                                //return false;
                                output_data += "<script>";
                                output_data += "document.getElementById('payment').submit();";
                                output_data += "</script>";
                                document.write(output_data);

原文由 mic 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 589
1 个回答

当您尝试提交时,该表格仍然不是文档的一部分。将行更改为:

 output_data += "window.onload = function() { document.getElementById('payment').submit(); }; ";

编辑:另一个“脏”选项是使用计时器:

 output_data += "window.setTimeout(function() { document.getElementById('payment').submit(); }, 500);";`

这将尝试在半秒延迟后提交。

编辑 2:刚才看得更深——你做错了。

您需要使用 AJAX 来执行结帐,使用 jQuery AJAX 变得非常易于使用。

试试这个,如果你撞墙了,请告诉我们。 :)

我几乎可以肯定 Google 公开了 jsonp 允许跨域 AJAX 的服务,如果没有,那么您将不得不从服务器端代码执行此操作。

原文由 Shadow Wizard Chasing Stars 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题