2009-10-02 4 views
0

사용자가 제출 단추를 클릭 할 때 포럼을 한 번 이상 제출하려고합니다. 왜? 장바구니에 하나 이상의 idem을 추가하려고합니다. 사용중인 장바구니 소프트웨어는 한 번에 하나 이상의 제품을 추가 할 수 없으며 핵심 코드를 편집하고 싶지 않습니다. 숨겨진 포럼에는 '1,2,3'과 같은 제품 ID가 있습니다. JavaScript를 사용하여 값을 구분하고 AJAX를 사용하여 장바구니에 게시해야합니다. 자바 스크립트는 훌륭하지 않지만 작동해야한다고 생각하는 코드를 작성했습니다. 단지 '요청에 문제가있었습니다.'라는 경고 만 표시했습니다. 두번. 나는 무엇이 잘못되었는지를 볼 수 없으며, 모든 도움과 제안을 환영합니다! 여기에 코드 :두 번 이상 양식 제출

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

idem -> item. 저기. 여기 -> 여기 있습니다. – recursive

+0

죄송합니다! 나는 12 시간 이상 있었고, 나의 나쁜 철자법은 내가 가진 더 적은 수면을 훨씬 악화시킨다. – Scott

답변

2

당신이 t를 추가하려면 당신이 동일한 품목을 가진 2 개의 지형도 작성 점을해야하는 카트에 wo 품목? 항목 당 하나의 게시물 만 볼 수 있습니다. 수량을 고려하지 않습니다. 그러나 이것은 문제가 아닙니다. 이 경우 이것은 논리 오류 일뿐입니다.

JavaScript 쪽에서는 jQuery를 사용하여 아약스를 다루는 것이 좋습니다. 모든 브라우저에서 작동하지 않을 수있는 일반 자바 스크립트보다 일상 생활을 편하게 만들어주기 때문입니다.

http://docs.jquery.com/Post이 대신 좀 더 복잡한 형태를 갖는 형태를 여러 번 게시 그것은 모든 프로그래밍 로직 반대

+0

JQuery에서 두 번째. – snicker

+0

수량을 고려하고 싶지는 않지만, 항상 1이되지만 해당 장바구니에 필요합니다. 나는 그 물건을 카트에 두 번 달아 놓을 것과 같은 물건을 넣은 두 개의 지위를 왜 두 번 할 것이며, 나는 한 번씩 그걸 한 번씩 원할 것입니다. – Scott

0

희망이 도움 :

JQuery와의 POST 방법에 관한 링크입니다. 내가 보거나 이해할 수있는 코드에서 분리 된 문자열을 반복하려고합니다. 루프는 어디서 어떻게 구성되어 있지 않습니다. 어쨌든, 내가 너라면, 나는 마이 그 레이션을 또 다른 무료 카트에 넣을 생각이다. 내가보기에 여기에서 약간의 도움을 받으면 그렇게 할 수있을 것입니다.

+0

한 번 이상 게시 할 수 있습니까? params에 json을 전달해야하므로 get 대신 post를 사용하지만 하나만 제출하면됩니다. https : //stackoverflow.com/questions/44773514/pass-kendo-grid-model-in-ajax-call – Samra

관련 문제