2009-08-18 147 views
0

我承認它不是很明確的標題。但我不知道如何命名我想要做的事。提交內提交

我有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作爲ID,並且提交按鈕的名稱被響應。我需要它需要執行;一旦用戶點擊這些表單中的任何一個,點擊表單應該將其數據發送到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

您不能有多個具有相同ID的元素,或者至少您無法使用該ID作爲任何有用的ID(如果有)。但由於提交按鈕位於表單標籤下方,因此您可以使用closest函數來選擇最接近的表單。而且,由於click事件中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 2009-08-19 01:23:29

+0

此代碼是您的代碼複製與此附加,這和最接近。嘗試在這裏和那裏添加警報,也許在點擊功能,看看他們顯示。同時驗證所有選擇器的工作。 – svinto 2009-08-19 08:16:27

1

我不是很確定你想做什麼,但你可以使用表單的提交事件和由AJAX處理請求。在處理函數中,您應該返回false以防止表單在瀏覽器中被冒險(因爲您將通過AJAX提交)。

我希望它有幫助。