将变量从PHP传递给jQuery click()函数

时间:2012-02-02 04:14:12

标签: php jquery html ajax

有人可以告诉我如何将变量Y传递给$('a:eq(0)').click()吗?我需要提醒服务器响应.click()功能。我正在使用PHP框架,如果这很重要的话。

<script>
    $(document).ready(function() {
        function clockIn(str){
            if (window.XMLHttpRequest)
            { // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }

            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    document.getElementById("message").innerHTML=xmlhttp.responseText;
                    var y = xmlhttp.responseText ; 

                }
            }
            xmlhttp.open("GET","http://localhost/gasstation/index.php/welcome/check_time_clock/"+ str,true);
            xmlhttp.send();
        } 

        $( "input:submit, a", ".login" ).button();

        $("a:eq(0)").click(function(){
            clockIn(<?php echo $emp_id; ?>);
        });

        $("a:eq(1)").click(function(){
            alert('m') ;
        })
    });
</script>

4 个答案:

答案 0 :(得分:1)

由于您正在进行ajax调用,因此您必须等到服务器响应,这样您才能在y hanlder中获得click的值。您可以将处理程序传递给clockIn,然后在ajax响应到来后执行它。试试这个。

function clockIn(str, callback){
   ...
   xmlhttp.onreadystatechange=function()
   {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
      {
        document.getElementById("message").innerHTML=xmlhttp.responseText;
        var y = xmlhttp.responseText ; 
        callback(y);
      }
   }
   ...
}


$("a:eq(0)").click(function(){
   clockIn("<?php echo $emp_id; ?>", function(y){
      //You will get the value of y here.
      alert(y);
   });
});

由于您使用的是jQuery,因此您应该完全利用它来使代码变得简单和干净。而不是创建自己的代码来创建xmlhttp请求对象和bla bla,你可以使用jQuery的$.ajax来实现相同的用途。你的代码会变成这样。

function clockIn(str, callback){
   $.ajax({
      url: "http://localhost/gasstation/index.php/welcome/check_time_clock/"+ str,
      success: function(data){
         $("#message").html(data);
         callback(data);
      }
   });
}

答案 1 :(得分:0)

试试这个:

$("a:eq(0)").click(function(){
        clockIn('<?php echo $emp_id; ?>');

    });

可能会帮助

答案 2 :(得分:0)

function clockIn(str, cb) {
    $.get("http://localhost/gasstation/index.php/welcome/check_time_clock/"+ str), function(res) {
        // do your stuffs here.
        var y = res;
        cb && cb(y);
    }
}

$("a:eq(0)").click(function(){
    clockIn("hello", function(y){ alert(y); }); // your y here
});

答案 3 :(得分:0)

自从你使用jQuery后我会做这样的事情:

<script>
$(document).ready(function() {
    var clockIn = function (str) {
        $.ajax({
            url: "http://localhost/gasstation/index.php/welcome/check_time_clock/"+ str,
            success: function (data) {
                $("#message").html(data);
                var y = data;
            }
        });
    }

    $( "input:submit, a", ".login" ).button();

    $("a:eq(0)").click(function(){
        clockIn('<?php echo $emp_id; ?>');
    });
    $("a:eq(1)").click(function(){
        alert('m') ;
    });

});
</script>

我希望这可以帮助你