2009-08-18 17 views
0

Ich gebe zu, es ist nicht sehr klar Titel. Aber ich wusste nicht, wie ich das, was ich versuche, nennen könnte.reichen einreichen

Ich habe index.htm. Diese Seite ruft Daten aus index.asp? Process = ViewRequests mit dem folgenden Code ab.

$(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('.'); 
      } 
     }); 
    }); 

Dann, in diesem neuen gezogenen Datensatz, habe ich ein paar Formulare. Alle Formulare haben REQUESTFORM als ID und senden Buttons Name ist Antwort. Was ich brauche, muss es erfüllen; Sobald der Benutzer auf eines dieser Formulare klickt, sollte das angeklickte Formular seine Daten an index.asp? Process = RespondRequests senden und seine Antwort ausgeben.

$("[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); 
       } 
      }); 
    }); 

Ist das überhaupt möglich?

Antwort

0

Sie können nicht mehr als ein Element mit der gleichen ID haben, oder zumindest können Sie die ID für nichts Nützliches verwenden, wenn Sie dies tun. Da sich die Schaltfläche "Senden" unterhalb des Formular-Tags befindet, können Sie mithilfe der Funktion closest das nächstgelegene Formular auswählen. Und da this in einem Click-Ereignis auf das Element verweist geklickt wird können Sie einfach einen Halt der Form für die Schaltfläche erhalten geklickt haben:

$(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

hallo, ich den Code versucht, habe ich nicht einen Fehler erhalten, aber es hat nicht Arbeit. Irgendeine Idee? – Efe

+0

Dieser Code ist Ihre Code-Kopie zusammen mit der Zugabe von diesem, das und am nächsten. Versuchen Sie, hier und da Warnungen hinzuzufügen, vielleicht in der Klick-Funktion und sehen Sie, ob sie angezeigt werden. Stellen Sie außerdem sicher, dass alle Selektoren funktionieren. – svinto

1

Ich bin nicht sehr sicher, was Sie zu tun versuchen, aber Sie können das Submit-Ereignis für das Formular verwenden und die Anfrage von AJAX behandeln. In der Handler-Funktion sollten Sie false zurückgeben, um zu verhindern, dass das Formular im Browser eingereicht wird (weil Sie es von AJAX einreichen).

Ich hoffe es hilft.