【问题标题】:use ajax variables on same html page在同一个 html 页面上使用 ajax 变量
【发布时间】:2012-12-20 06:18:37
【问题描述】:

我在我的应用程序中使用了 Input type="date" 字段来接受来自用户的日期值。但是我必须将名为“sdate”的日期值发布到操作方法中使用的地址中,如下所示。我想将 Input 类型日期字段的值发布到 Form Post 方法的操作中。

我已经通过 AJAX 将这些值存储到变量中,但是如何将这些 AJAX 变量用于

我写的视图代码如下:

<form method="post" id="report" class="live" target="_blank" action="http://wcidevapps.com/salescentral/jm2/troute.php?custnum=<?php echo $KUNNR?>&staffid='+staffid+'&rdate='+sdate+'">

<fieldset><legend>Today's Tasks</legend></fieldset>

<div class="span5 well">
    <div class="form-inline">
        <label class="control-label"><b> For </b> </label>
            <input type="text" name="stech" id="stech"/>
    </div><br/><br/>

    <div class="form-inline">
        <label class="control-label"><b> On </b> </label>
            <input type="date" class="datefield" name="sdate" id="sdate"/>
    </div><br/><br/>

    <button type="submit" name="open" class="btn btn-primary offset4"><i class="icon-file"></i> Open</button>
</div>

</form>



<script type="text/javascript">

var onFilter = function () {
        var obj = {
            sdate: $("#sdate").val(),
            stech: $("#stech").val()
        };
        $.ajax({
            method: 'POST',
            dataType: "JSON",
            contentType: "application/json; charset=utf-8",
            url: root + 'standard_projects/?json',
            data: obj,
            success: function (d) {
            sdate=d.sdate,
            staffid=d.staffid
            }
        });
    }
    $("#sdate").live("change", onFilter);
    $("#stech").live("change",onFilter);
</script>

如何使用这些 AJAX 变量? 日期和员工编号

【问题讨论】:

  • 是否在函数外部定义了sdate & staffid
  • 没有那些没有在函数之外定义的
  • 你能澄清你所说的“使用”这些变量是什么意思吗?你想用它们做什么?
  • 我只想将请求发送到某个站点以获取一些文档,因为我需要提供经过验证的 Staffid 在成功的服务器响应后我将进入 AJAX 变量 Staffid 我想发布到使用的地址在Form标签的动作中..
  • 如果它们没有在函数外部定义,即仅在函数本地并且你想使用它,那么在你的函数外部声明它就像var sdate, staffid;

标签: php ajax html jquery


【解决方案1】:

您不能在 ajax 之外使用 ajax 变量。而不是从脚本开头声明变量

【讨论】:

    【解决方案2】:

    我认为你错过了document ready handler,一切似乎都很好。在最新的 jQuery 版本中不推荐使用 live,因此您可以使用 .on() 处理程序。

    你错过了一些';'

    来自 jQuery 文档:

    从 jQuery 1.7 开始,.live() 方法已被弃用。使用 .on() 来 附加事件处理程序。

    试试这个,看看是否有帮助:

    <script type="text/javascript">
    
    var onFilter = function () {
            var obj = {
                sdate: $("#sdate").val(),
                stech: $("#stech").val()
            };
            $.ajax({
                method: 'POST',
                dataType: "JSON",
                contentType: "application/json; charset=utf-8",
                url: root + 'standard_projects/?json',
                data: obj,
                success: function (d) {
                sdate=d.sdate; //<--------------missing ';'
                staffid=d.staffid; //<----------missing ';'
                $('form#report').attr("action", "http://wcidevapps.com/salescentral/jm2/troute.php?custnum="+<?php echo $KUNNR?>+"&staffid=" + staffid + '&rdate=' + sdate + '"');
                }
            });
        }; //<----------------------------------missing ';'
        $(function(){
            $(document).on("change", "#sdate", onFilter);
            $(document).on("change", "#stech", onFilter);
        });
    </script>
    

    【讨论】:

    • 我想知道如何在
      的“action”属性中将我的 AJAX 的 Staffid 和 sdate 变量用于同一页面?
    • @Rattatolae 查看代码中的更新行。我们将变量附加到表单的操作。
    • 它返回到相同的页面地址而不是返回到行动中给出的地址?如何打开该链接地址?
    • 没有使用实际地址,它会打开当前所在的同一页面地址
    • 你的意思是你的表单没有提交到action url。
    【解决方案3】:

    只需在你的成功函数中使用它

    <form method="post" id="report" class="live" target="_blank" action="http://wcidevapps.com/salescentral/jm2/troute.php?custnum=<?php echo $KUNNR?>&">
    
    //...
    var report=$('#report), 
        url=report.attr('action'), 
        useStaff = function(staffid, sdate){
            report.attr('action', url+'staffid='+staffid+'&rdate='+sdate);
            //submit report or so...
        };
    $.ajax({
            method: 'POST',
            dataType: "JSON",
            contentType: "application/json; charset=utf-8",
            url: root + 'standard_projects/?json',
            data: obj,
            success: function (d) {
                useStaff(d.staffid, d.sdate);
            }
        });
    

    【讨论】:

    • 但我想在我的表单标签操作中使用那些有一些地址的 Staffid 和 sdate 变量......
    • 但是它没有连接地址值?
    • report.attr('action', url+'staffid='+staffid+'&amp;rdate='+sdate);
    猜你喜欢
    • 2018-11-21
    • 2018-12-26
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多