在同一个html页面上使用ajax变量

时间:2012-12-20 06:18:38

标签: php ajax html5 jquery

我使用了一个Input type =“date”字段来接受我的应用程序中用户的日期值。但是我必须将名为“sdate”的日期值发布到action方法中使用的地址中,如下所示。我想将输入类型日期字段的值发布到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&amp; STAFFID

3 个答案:

答案 0 :(得分:2)

你不能在ajax之外使用ajax变量。而不是从脚本开始

的Declare变量

答案 1 :(得分:0)

只需在成功函数中使用它

<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);
        }
    });

答案 2 :(得分:0)

我认为你错过了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>