2014-06-07 80 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”? –