【问题标题】:Sending an ajax request and updating a button status发送 ajax 请求并更新按钮状态
【发布时间】:2013-08-09 05:45:15
【问题描述】:

我有这个按钮的代码,

<table style='border:0;margin:0;padding:0;'><tr><td>";
echo "<form action='' method='POST'><input type='submit' id='ajaxwel'
class='".(getqrsitebooleans($companyqr,10002,'True') === 'True' ? 'togglebtn' :
'togglebtnon' )."' name='dotogglebool' value='".
(getqrsitebooleans($companyqr,10002,'True') === 'True' ? 'Skjul' : 'Vis' ).
"'><input type='hidden' name='mainsetup' value='1'><input type='hidden' 
name='itemid' value='10002'></form></td><td>$tmptextholder</td></tr></table>

我要做的是用 ajax 发送表单,然后更新按钮状态,这是由 class='".(getqrsitebooleans($companyqr,10002,'True') === 'True' ? 'togglebtn' : 'togglebtnon' )."' 完成的

但目前我也不知道该怎么做。该按钮有两种状态,由数据库中的值更改,单击时会发送一个 POST 更改数据库中的值,重新加载站点,然后读取更改并将更改的状态显示为从绿色变为红色,

我假设我将使用 $.ajax,但不完全确定。任何帮助将不胜感激。!

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:
    $.ajax(function(){
      complete: function(){
         $('#ajaxwel').prop('val','Submit'); 
      },
      beforeSend: function(){
         $('#ajaxwel').prop('val','Sending..');
      }
    });
    

    【讨论】:

    • 我可以请您再解释一下您的答案吗?如何更新按钮表单以记录值的变化?对不起,我第一次尝试使用 ajax,所以需要一些指导来理解它。
    【解决方案2】:

    试试看,

    <?php
        echo "<table style='border:0;margin:0;padding:0;'><tr><td>
        <form action='' method='POST'>
            <input type='submit' id='ajaxwel'
               class='".(getqrsitebooleans($companyqr,10002,'True') === 'True' ? 
               'togglebtn' : 'togglebtnon' )."' 
               name='dotogglebool' value='".(getqrsitebooleans($companyqr,10002,'True') === 'True' ? 'Skjul' : 'Vis' )."'>
            <input type='hidden' name='mainsetup' value='1'><input type='hidden' name='itemid' value='10002'>
        </form></td><td>".$tmptextholder."</td></tr></table>";
    ?>
    

    【讨论】:

    • 对不起,可能没有说清楚,代码在 php 标签内,但我试图发送它而不必再次更新整个页面,让用户远离按钮被点击。但只更新实际的按钮表单以注册更改的值。
    【解决方案3】:

    AJAX 将调用您创建的页面。该页面执行所有数据库 ping。

    确保发布正确的变量。另外:在该页面上,您将返回 Javascript、JSON、XML 或其他任何可解析的内容......并在完整的函数中对其进行解析。在该页面内,确保您的所有操作都得到处理,并且数据库查询您想要的内容。

    您希望我发布一个示例页面吗?打样电话?等等?

    数据: 被ping的页面:http://phpfiddle.org/main/code/tt3-8j2

    ajax 请求:

    $.ajax({}
      method:"POST",
      data: {myItem: "some data"}
      url: "TESTPAGE.php",
      success: function(a,b,c){
        $("#button").val(JSON.parse(a.responseText)["out"]);
        //if something is updated you might want to disable it as well temporarily.
        $("#button").css("disabled","disabled");
      }
    );
    

    这将使用发布的数据 ping 一个页面。你会做一些数据库的东西,并回显一个回报。然后将返回的内容传递给成功调用。

    我无法真正在 atm 测试它,小错误如成功调用中的哪个变量等。

    按钮的值应更改为“更新”

    【讨论】:

    • 已更新。此外,您还需要确保 url 目录正确。我是什么意思?我的意思是我的例子中的 TESTPAGE.php 将在同一个目录中......但是很多人通过将 web 服务放入不同的目录等来隔离信息。
    • 我想我了解如何发送我的请求,需要发送 name=dotogglebool value=itemid,但不确定如何刷新按钮以显示发送帖子后触发的新状态?
    • 您根本不需要使用 AJAX 刷新页面。它将允许您的代码在客户端运行时动态修改。我建议您使用浏览器 JAVASCRIPT 工具包并 1)跟踪控制台错误和 2)跟踪网络,查看在触发请求时返回的错误等(如果有) .
    猜你喜欢
    • 1970-01-01
    • 2020-10-18
    • 2016-06-12
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 2012-10-15
    相关资源
    最近更新 更多