2009-10-02 7 views
0

Je tente d'envoyer un forum plus d'une fois lorsqu'un utilisateur clique sur le bouton Soumettre. Pourquoi? Je suis essayer d'ajouter plus d'un idem à un panier, le logiciel de panier que j'utilise ne supporte pas l'ajout de plus d'un produit à la fois et je ne veux pas éditer le code de base. Le forum caché aurait les identifiants de produit comme '1,2,3' J'ai alors besoin du JavaScript pour séparer les valeurs et poster chacune d'elles en utilisant AJAX dans le panier. Je ne suis pas un bon JavaScript, mais j'ai codé ce que je pense que cela devrait fonctionner mais il suffit de me donner une alerte: «Il y avait un problème avec la demande. deux fois. Je ne peux pas voir ce qui ne va pas, toute aide et suggestions sont les bienvenues! Voici le code:Soumission d'un formulaire plusieurs fois

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

Beaucoup d'erreurs d'orthographe rendent la compréhension difficile. Tu veux dire forme pas forum, n'est-ce pas? – whatnick

+0

idem -> article. là -> leur. Ici -> Voici. – recursive

+0

Désolé! J'ai été debout pendant plus de 12 heures, ma mauvaise orthographe empira beaucoup moins le sommeil que j'ai. – Scott

Répondre

2

Si vous voulez ajouter t wo articles au panier ne devriez-vous pas faire deux postes avec le même article? Je peux juste voir un article par article là. Vous ne prenez pas la quantité en compte. Mais ce n'est pas le problème. Dans ce cas, il s'agit seulement d'une erreur de logique. Pour le côté javascript, je vous recommande d'utiliser jQuery pour traiter les ajax car cela rendra votre vie plus facile que le javascript normal qui pourrait ne pas fonctionner avec tous les navigateurs.

C'est le lien en rapport avec la méthode POST de jQuery: http://docs.jquery.com/Post

Hope it helps

+0

Appuyé sur le JQuery. – snicker

+0

Je ne veux pas prendre en compte la quantité, ce sera toujours 1 mais c'est requis par ce panier. Je ne sais pas pourquoi je ferais deux postes avec le même article qui mettraient ça idem le panier deux fois et je les veux chacun une fois. – Scott

0

Il est contre toutes les logiques de programmation pour afficher une forme plusieurs fois au lieu d'avoir une forme plus complexe. D'après ce que je peux voir ou comprendre à partir de votre code, vous essayez de faire une boucle dans votre chaîne séparée (brokenstring). Votre boucle n'est pas construite où et comment elle devrait être. De toute façon, si j'étais vous, je considérerais migraton à un autre panier gratuit o la possibilité d'en écrire un moi-même. D'après ce que je vois, vous serez en mesure de le faire avec un peu d'aide d'ici.

+0

est-il possible de poster plus d'une fois? J'ai besoin de passer json dans params donc en utilisant post au lieu de get mais il me limite à un seul soumettre ... https: //stackoverflow.com/questions/44773514/pass-kendo-grid-model-in-ajax-call – Samra

Questions connexes