2009-08-18 5 views
0

Я признаю его не очень четкое название. Но я не знал, как еще назвать то, что я пытаюсь сделать.submit in submit

У меня есть index.htm. эта страница извлекает данные из index.asp? Process = ViewRequests со следующим кодом.

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

Затем, в этом новом наборе данных, у меня есть несколько форм. Все формы имеют REQUESTFORM как идентификатор и имя кнопки отправки. То, что мне нужно, нужно выполнить; после того, как пользователь нажмет на одну из этих форм, щелкните по форме, чтобы отправить свои данные в index.asp? Process = RespondRequests и распечатать свой ответ.

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

Возможно ли это?

ответ

0

У вас не может быть более одного элемента с одинаковым идентификатором, или, по крайней мере, вы не сможете использовать идентификатор для чего-либо полезного, если хотите. Но поскольку кнопка отправки находится ниже тега формы, вы можете использовать функцию closest, чтобы выбрать ближайшую форму. А поскольку this в случае щелчка относится к элементу, щелкнули вы можете легко ухватить форму для кнопки щелкнул:

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

привет, я попробовал код, я не получил какой-либо ошибки, но он не сделал Работа. Есть идеи? – Efe

+0

Этот код представляет собой копию вашего кода вместе с добавлением этого, этого и самого близкого. Попробуйте добавить оповещения здесь и там, возможно, в функцию щелчка и посмотреть, показывают ли они. Также убедитесь, что все селекторы работают. – svinto

1

Я не очень уверен в том, что вы пытаетесь сделать, но вы можете использовать событие отправки для формы и обрабатывать запрос AJAX. В функции обработчика вы должны вернуть false, чтобы предотвратить отправку формы в браузере (потому что вы отправите ее AJAX).

Надеюсь, это поможет.