2009-08-19 30 views
0

Benutzerdaten werden gepostet, sobald der Benutzer auf eine der Schaltflächen mit demselben Namen klickt = "antwortet" verschiedene Werte "Bestätigen" und "Ignorieren". Mein Problem hier, Button-Werte werden nicht veröffentlicht, wenn ich jquery wie in den folgenden Codes verwenden. Gibt es eine Möglichkeit, das zu beheben?Wert des Formulars-Buttons senden

$("[name='respond']").live('click', function() { 
      $.ajax({ 
       type: "POST", 
       data: $(this).closest('#REQUESTFORM').serialize(), 
       url: "content/requests/index.cs.asp?Process=RespondRequests", 
       success: function(output) { 
       alert(output); 
       //$(this).closest('#REQUESTFORM').html(output); 
       }, 
       error: function(xhr){ 
        alert('Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' ' + xhr.responseText); 
       } 

      }); 
    }); 
          <div class="tools"> 
           <form method="post" action="content/requests/index.cs.asp?Process=RespondRequests" id="REQUESTFORM"> 

             <input type="hidden" name="REQUESTID" value="<%=objRequests("REQUESTID")%>"> 
             <input type="hidden" name="BYID" value="<%=objRequests("BYID")%>"> 
             <input type="hidden" name="TOID" value="<%=objRequests("TOID")%>"> 
             <input type="button" name="respond" value="Confirm" class="btn_confirm" /> 
             <input type="button" name="respond" value="Ignore" class="btn_ignore" /> 

           </form> 

Antwort

0

Setzen Sie ein verstecktes Feld mit id="action" in Ihrem Formular und legen Sie seinen Wert fest, wenn Sie auf eine der Schaltflächen klicken. So wird die JS sein:

$("[name='respond']").live('click', function() { 
    $('#REQUESTFORM #action').val($(this).val()); 
    $.ajax({ 
      type: "POST", 
       data: $(this).closest('#REQUESTFORM').serialize(), 
       url: "content/requests/index.cs.asp?Process=RespondRequests", 
       success: function(output) { 
       alert(output); 
       //$(this).closest('#REQUESTFORM').html(output); 
      }, 
      error: function(xhr){ 
        alert('Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' ' + xhr.responseText); 
      } 
     }); 
}); 

Und die HTML:

<form method="post" action="content/requests/index.cs.asp?Process=RespondRequests" id="REQUESTFORM"> 
    <input type="hidden" name="REQUESTID" value="<%=objRequests("REQUESTID")%>"> 
    <input type="hidden" name="BYID" value="<%=objRequests("BYID")%>"> 
    <input type="hidden" name="TOID" value="<%=objRequests("TOID")%>"> 
    <input type="button" name="respond" value="Confirm" class="btn_confirm" /> 
    <input type="button" name="respond" value="Ignore" class="btn_ignore" /> 
    <input type="hidden" id="action" value="" /> 
</form> 
0

gefallen die

data: 'respond='+$(this).attr('value')+$('#REQUESTFORM').serialize(), 
+0

ich Post, nicht bekommen. Es wird nicht funktionieren. – Efe

0

Meine Vermutung wäre, dass, weil diese (A) "Knopf" Eingänge und nicht die Eingänge auf "Senden" und/oder weil (B) Ihre Onclick-Funktion (vor allem vielleicht kombiniert mit live()) fängt den post und nicht erlaubt den "name" als teil der form daten zu werden.

Eine Idee ist, dass Sie einfach etwas Code hinzufügen können, um sicherzustellen, dass es Teil der Formulardaten wird. Erwägen Sie einen weiteren versteckten Eingang zu Ihrem HTML:

<input type="hidden" name="TheActualRespondField" value="" /> 

Und dann, in der 'Klick' Funktion JavaScript aktivieren,

$("[name='respond']").live('click', function() { 
    // register the correct button-click-value: 
    $('[name="TheActualRespondField"]').val($(this).val()); 
    // now do your ajax form post: 
    $.ajax({ 
     type: "POST" // etc... 
    }); 
} 

Best of luck!
-f!

Verwandte Themen