2014-06-07 136 views
0

我有這樣的代碼提交到數據庫,但不refresing,但問題是,當它的發送,變量仍停留在文本框刷新文本框

<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script> 


<script> 
$(document).ready(function(){ 
    $("form").on('submit',function(event){ 
    event.preventDefault(); 

     data = $(this).serialize(); 

     $.ajax({ 
     type: "POST", 
     url: "insert.asp", 
     data: data 
     }).done(function(msg) { 

     }); 
    }); 
}); 
</script> 

我在想,如果有一種方法變量將在發送到數據庫後從文本文件中消失,甚至在保存數據時會自動消失。

+1

當然你可以通過簡單的網絡搜索找到無數的答案! – charlietfl

回答

0

我想你會想要做的就是添加在下面的Ajax請求回調您所期望的行爲。目前,您正在使用「done」作爲回調,無論成功或失敗,在我理解的情況下,只要ajax調用完成,就會執行該操作。如果這就是你想要的,在這個回調中添加文本域清除和警報代碼,否則像「成功」這樣的回調可能更合適。

我不完全確定你的意思是「警報」......如果你指的是一個警報框,即:alert(),我不會建議它。這會暫停腳本,直到用戶單擊該按鈕,因此無法在警報顯示後終止警報。此外,警報箱並不是向用戶展示最好的東西。另一種方法是在頁面的某個地方定義一個div,在成功/完成回調中將成功消息添加到jquery中,然後設置一個超時時間以使其消失(包含在我的示例中)。如果你正在尋找更精細的東西,jquery ui有一些替代方案可以在他們的小部件中提醒框。

也許這個代碼可以給你一些想法開始:

<script> 
$(document).ready(function(){ 
    $("form").on('submit',function(event){ 
     event.preventDefault(); 

     data = $(this).serialize(); 

     $.ajax({ 
     type: "POST", 
     url: "insert.asp", 
     data: data 
     }).success(function() { 

      $("#feedback").append("<div class='messages' style='border:1px green solid; padding:2px; margin:5px;'>successfully submitted!</div>"); 

      setTimeout(function() { 
       $(".messages").fadeOut(function(){ 
        $(".messages").remove(); 
       }); 
      }, 1000); 

      $("input[type=text]").val(""); 

     }); 
    }); 
}); 
</script> 

哪裏有一個id =「反饋」,你想顯示消息的股利。

+0

非常感謝。它完美地工作,並且就像我期望的那樣。耶穌祝福你 – blay

+0

其正常工作,但想知道如果成功的消息可能會出現在光標的位置。因爲我在嵌套記錄上使用它 – blay

+0

你可以做這樣的事情:http://jsfiddle.net/UvnKA/3/ 請注意,這從提交事件改變爲點擊事件,以捕獲鼠標座標,並且我將url參數更改爲空白,以便它可以在jsfiddle上工作。 – JammGamm

1

你可以做這樣的事情:

$('input[type=text]').val(''); // select all text inputs and assign value of '' 

您的代碼:

<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script> 


<script> 
$(document).ready(function(){ 
    $("form").on('submit',function(event){ 
    event.preventDefault(); 

     data = $(this).serialize(); 

     $.ajax({ 
     type: "POST", 
     url: "insert.asp", 
     data: data 
     }).done(function(msg) { 
      $('input[type=text]').val(''); 
     }); 
    }); 
}); 
</script> 
+0

與提供,它甚至不提交和頁面也刷新 – blay

+1

這應該工作。您只需複製完成回調中包含的部分。如果沒有,我會檢查您的瀏覽器控制檯中的錯誤。 – JammGamm

+0

我接過你的代碼(應該可以),並且在你的ajax調用完成後(即在收到來自該調用的響應之後)添加了一個簡單的行,說'清除我所有的文本輸入值'。 這不應該傷害你的任何職位,不應該刷新頁面。檢查你做錯了什麼..BTW從我在這裏看到你試圖阻止頁面提交,並以ajax的方式做到這一點。爲什麼不移除提交按鈕並處理常規按鈕上的「onclick」? –