2009-08-19 5 views
0

Данные пользователя размещены после нажатия одной из кнопок с одним и тем же именем = «отвечать» на разные значения «Подтвердить» и «Игнорировать». Моя проблема здесь, значения кнопки не отправляются, когда я использую jquery, как в следующих кодах. Есть ли способ исправить это?значение кнопки формы формы

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

ответ

0

Поместите скрытое поле с изображением id="action" в свою форму и установите его значение при нажатии одной из кнопок. Таким образом, JS будет:

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

И в 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

ли как этот

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

Я использую пост, а не получить. Это не сработает. – Efe

0

Мое предположение было бы, что из-за них (A) "кнопка" входы и не "представить" входы и/или потому, что (B) ваша функция OnClick (особенно, возможно, в сочетании с live()) улавливает почту и не позволяет «имени» стать частью данных формы.

Одна из идей заключается в том, что вы можете просто добавить код, чтобы быть уверенным, что он станет частью данных формы. Попробуйте добавить еще один скрытый вход в ваш HTML:

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

И затем, в вашем защелкиванием функции JavaScript,

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

удачи!
-f!

Смежные вопросы