我可以缩短这个脚本吗? (更新数据库表并刷新)

时间:2015-10-13 04:09:16

标签: javascript php jquery mysql ajax

我真的想知道编写此代码是否有更短的替代方法。我试图将其缩短为2或1个功能并实现了悲惨的失败。我正在寻求建设性的反馈!

<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
function f_solar_1() {
    $.get("f_solar_1.php");
    return false;
}
</script>

<script type="text/javascript">
function refresh(){
location.reload(true);}
</script>

<script type="text/javascript">
function both(){
    f_solar_1()
    setTimeout(refresh, 5);
    }
</script>

<a href="#" onclick="both();">Activate</a>

详细说明:

此代码摘自我的php页面,该页面显示了我的mysql数据库中的表格(我正在使用wamp)。

底部的“激活”文本应该更新该表上的变量,并通过f_solar_1.php文件执行此操作。

问题是反映数据库的表格不会自动反映此更改。

所以我创建了一个“reload()”函数来刷新页面,并使用“both()”函数来更新数据库后刷新时间。

我已经知道了一段时间的基本html,但是我是今天早上的mysql,ajax和php新手,这是我尝试深入研究它。

我的代码工作正常,只是让我不知道我是否可以在一个函数中完成同样的事情。

提前谢谢!

更新:感谢Dat Pham指出我正确的方向!

<script type="text/javascript">
function newfunc(){
$.get( "f_solar_1.php", function( data ) {
location.reload(true);
});}
</script>

<span onclick="newfunc();">newfunc</span>

代码全部在一个函数中(好吧......)并且不会导致刷新和php调用时序冲突。

2 个答案:

答案 0 :(得分:0)

使1个函数做所有事情被认为是不好的做法,函数应该做,只做一个原子任务。你的代码很好,除了一些小问题:

  • ajax调用$ .get()和location.reload不应该互相使用,因为这会破坏ajax调用的含义。您可以传递一个回调函数来处理来自后端服务器的数据 $.get( "f_solar_1.php", function( data ) { alert( "Load was performed." ); });
  • 将所有脚本标记与所有函数声明
  • 合并为1

此致

答案 1 :(得分:0)

您是否通过后端(例如phpmyadmin)检查了数据库并验证了是否正在进行更改,即使它没有显示?

我想知道你的网页是不是真的令人耳目一新,只是去“#”。检查“return false” - 它并不真正应用于“A”链接,你必须在“both”函数中放置“return false”才能取消链接。但是你可能不想这样做一分钟后阅读:The return false onclick anchor not completely working

另外,我建议使用jquery add事件监听器来触发你的函数调用,并从你的html标签中获取onClick。如果你学习如何在没有jquery的情况下做到这一点,那就是奖励快速阅读jquery href and onclick separation