繁体   English   中英

多次提交表格

[英]Submitting a form more than once

我试图让一个论坛在用户单击“提交”按钮后再提交一次。 为什么? 我试图在购物车中添加一个以上的想法,我正在使用的购物车软件不支持一次添加一个以上的产品,并且我不想在其中编辑核心代码。 隐藏的论坛将具有产品ID,例如“ 1,2,3”,然后我需要JavaScript来分隔值并将每个使用AJAX发布到购物车中。 我不是JavaScript很棒的人,但是我编码了我认为应该起作用的代码,但它只是给我一个警告:“请求存在问题。” 两次。 我看不出有什么问题,欢迎任何帮助和建议! 这里的代码:

JS

<script type="text/javascript">
function testResults (form) {

var product_id = form.product_id.value;
var quantity = form.quantity.value;
var brokenstring=product_id.split(",");

for ( var i in brokenstring )
{

   var http_request = false;
   function makePOSTRequest(url, parameters) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }

      http_request.onreadystatechange = alertContents;
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }

   function alertContents() {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById('myspan').innerHTML = result;            
         } else {
            alert('There was a problem with the request.');
         }
      }
   }


      var poststr = "product_id=" + encodeURI( brokenstring[i] ) +
                    "&quantity=" + encodeURI( quantity );
      makePOSTRequest('post.php', poststr);



}
}
</script>

HTML

<form action="javascript:testResults(document.getElementById('myform'));" name="myform" id="myform">
<input type="text" name="product_id" id="product_id" />
<input type="hidden" name="quantity" id="quantity" value="1" />
<br />
<input type="submit" name="button" value="Submit" />
</form>


<span name="myspan" id="myspan"></span>

post.php中

<?php
print_r($_POST);
?>

如果要向购物车中添加两个项目,您是否应该在两个项目中添加相同的项目? 我在那里只能看到一篇文章。 您没有考虑数量。 但这不是问题。 在这种情况下,这只是逻辑错误。

对于javascript方面,我建议您使用jQuery来处理ajax内容,因为它比通常可能无法在所有浏览器上正常运行的javascript简化了生活。

这是与jQuery的POST方法相关的链接: http : //docs.jquery.com/Post

希望能帮助到你

多次发布一个表单而不是拥有一个更复杂的表单是违反所有编程逻辑的。 从我可以从您的代码中看到或理解的内容来看,您正在尝试遍历拆分的(断字符串)字符串。 您的循环并未在何处以及如何构建。 无论如何,如果我是你,我会考虑将偏头痛转移到另一个免费购物车上,或者可以自己写一个。 从我看来,您将可以在这里得到一点帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM