2009-08-18 10 views
0

J'avoue son titre pas très clair. Mais je ne savais pas comment nommer ce que j'essayais de faire.soumettre à l'intérieur soumettre

J'ai index.htm. cette page extrait les données d'index.asp? Process = ViewRequests avec le code suivant.

$(function Requests() { 
     $.ajax({ 
      type: 'GET', 
      url: 'content/requests/index.cs.asp?Process=ViewRequests', 
      success: function(data) { 
       $("#requests").html(data); 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       $("#requests").html('.'); 
      } 
     }); 
    }); 

Ensuite, dans ce nouvel ensemble de données tiré, j'ai quelques formes. Tous les formulaires ont REQUESTFORM comme ID et le nom des boutons de soumission est répondu. Ce dont j'ai besoin doit être performant; Une fois que l'utilisateur clique sur l'un de ces formulaires, le formulaire cliqué doit envoyer ses données à index.asp? Process = RespondRequests et imprimer sa réponse.

$("[name='respond']").click(function() { 
      $.ajax({ 
       type: "POST", 
       data: $("#REQUESTFORM").serialize(), 
       url: "content/requests/index.cs.asp?Process=RespondRequests", 
       success: function(output) { 
       $('#REQUESTFORM').html(output) 
       }, 
       error: function(output) { 
       $('#REQUESTFORM').html(output); 
       } 
      }); 
    }); 

Est-ce encore possible?

Répondre

0

Vous ne pouvez pas avoir plus d'un élément avec le même ID, ou au moins vous ne pourrez pas utiliser l'ID pour quelque chose d'utile si vous le faites. Mais puisque le bouton de soumission est sous la balise de formulaire, vous pouvez utiliser la fonction closest pour sélectionner le formulaire le plus proche. Et depuis this dans un événement de clic fait référence à l'élément étant cliqué, vous pouvez facilement obtenir une prise de forme pour le bouton cliqué:

$(function Requests() { 
    $.ajax({ 
     type: 'GET', 
     url: 'content/requests/index.cs.asp?Process=ViewRequests', 
     success: function(data) { 
     var that = this; 
     $("#requests").html(data); 
     $("[name='respond']").click(function() { 
      $.ajax({ 
      type: "POST", 
      data: $(that).closest("form").serialize(), 
      url: "content/requests/index.cs.asp?Process=RespondRequests", 
      success: function(output) { 
       $(that).closest("form").html(output) 
      }, 
      error: function(output) { 
       $(that).closest("form").html(output); 
      } 
      }); 
     }); 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
     $("#requests").html('.'); 
     } 
    }); 
    }); 
+0

Salut, j'ai essayé le code, je ne reçois pas d'erreur, mais il n'a pas travail. Une idée? – Efe

+0

Ce code est votre copie de code collée avec l'addition de ceci, cela et plus proche. Essayez d'ajouter des alertes ici et là, peut-être dans la fonction de clic et voir si elles s'affichent. Vérifiez également que tous les sélecteurs fonctionnent. – svinto

1

Je ne suis pas très sûr de ce que vous essayez de faire mais vous pouvez utiliser l'événement submit pour le formulaire et gérer la demande par AJAX. Dans la fonction handler, vous devez retourner false pour éviter que le formulaire ne soit envoyé dans le navigateur (car vous le soumettrez par AJAX).

J'espère que ça aide.