2009-08-20 15 views
1

我有id =#REQUESTFORM的多個表單。要在發送數據時檢索正確的信息,我使用最接近的命令。但是,當我嘗試成功使用Ajax回調時,同樣的命令不起作用。如何才能以正確的格式接收和打印服務器的響應?成功使用最接近的命令ajax回調

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

你是說在頁面上有多個元素具有相同的ID?這可能是您的問題的來源,因爲它違反了html規範。 – seth 2009-08-20 00:44:06

回答

2

在成功函數來輸出指的是從服務器接收到的數據,我不能看到它關聯到你的DOM反正。還有就是你要引用的#REQUESTFORM一個很簡單的一招:

...live('click', function() { 
    $("[name='action']... 
    // REFERENCE TO the REQUESTFORM 
    var requestForm = $(this).closest('#REQUESTFORM'); 

    $.ajax({ 
     type: "POST", 
     data: requestForm.serialize(), 
     ... 
     success: function(output) { 
      requestForm.html(output); 
     ... 

由於JS功能範圍是地方定義它,而不是其中它被使用,VAR requestForm將提供給成功的功能即使事件綁定功能也結束了。

最後一件事,就你的情況而言,你用ID引用的表單,假設它是整個DOM唯一的,你實際上可以使用$('#REQUESTFORM')而不是最接近的。

+0

哇,那!謝謝!!! – Efe 2009-08-20 01:26:50