2009-10-02 128 views
0

我嘗試讓用戶單擊提交按鈕時多提交一次論壇。爲什麼?我嘗試向購物車添加更多然後一個同義詞,我正在使用的購物車軟件不支持一次添加多個產品,我不想在那裏編輯核心代碼。隱藏的論壇會有'1,2,3'這樣的產品ID,然後我需要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); 
?> 
+1

許多拼寫錯誤使理解困難。你的意思是表格不是正確的? – whatnick

+0

同上→項目。那裏 - >他們的。這裏 - >這是。 – recursive

+0

對不起!我已經睡了12個小時以上,我的糟糕拼寫變得更糟,我的睡眠減少了。 – Scott

回答

2

如果你想添加ŧ wo物品到購物車不應該你做兩個相同的項目的職位?我可以在那裏看到每篇文章的一篇文章。您沒有考慮數量。但這不是問題。在這種情況下,這只是一個邏輯錯誤。

對於JavaScript方面,我會建議你使用jQuery來對待ajax的東西,因爲它會讓你的生活方式比普通的javascript更容易,可能事件不適用於所有瀏覽器。

這是與jQuery的POST方法的鏈接:http://docs.jquery.com/Post

希望它可以幫助

+0

借用JQuery。 – snicker

+0

我不想將數量考慮在內,它始終爲1,但該購物車需要它。我不知道爲什麼我會用兩個相同的物品做兩個帖子,這兩個物品會把這個同類物品放在購物車兩次,我希望每個人都有一次。 – Scott

0

這是對所有的編程邏輯來發布形式數次,而不是有一個更復雜的形式。從我可以看到或從你的代碼中知道你正在嘗試循環你的分割(brokenstring)字符串。你的循環不是在哪裏以及應該如何構建的。無論如何,如果我是你,我會考慮遷移到另一個免費購物車o自己寫一個可能性。從我看到的你可以在這裏得到一點點幫助的時候這樣做。

+0

是否可以發佈多次?我需要傳遞json的參數,所以使用後,而不是得到,但它限制我只有一個提交... https://stackoverflow.com/questions/44773514/pass-kendo-grid-model-in-ajax-call – Samra