jquery ajax,如何在句柄页面中调用onload事件?

时间:2011-05-17 21:14:45

标签: javascript jquery onload

我尝试通过jquery ajax将值从第a页发布到第b页。 但是当我在句柄页面中需要一个onload事件时。我尝试了两种方法,但都失败了。如何正确调用或这是一个错误?

a.php只会

<script type="text/javascript" src="jquery-1.6.1.min.js"></script>
<script type="text/javascript">     
jQuery(document).ready(function(){
    $("a").click(function(){
     $.ajax({
         url: "b.php", 
         dataType: "html",
         type: 'POST', 
         data: "word="+"hello", 
         success: function(data){ 
            $("#show").html(data);
         }
      });
    });
});
</script>
<a href="#">click</a>
<div id="show"></div>

b.php

<script language="JavaScript">
   function callhello() {
       alert('<?php echo $_POST['word']; ?>');
       //many other code, for a test, I moved them. and replace a alert call.
   }
</script>
<body onload="JavaScript:callhello()"><!-- way 1, put onload here, not run -->
    Blah~~ Blah~~ Blah~~
<script language="JavaScript">// change to text/javascript or even remove, no effect
window.onload = function() {
  callhello();
};
</script><!-- way 2, put onload here, still not run. -->
</body>

2 个答案:

答案 0 :(得分:4)

将HTML插入文档时,将使用文档的上下文执行任何脚本。这意味着window.onload引用了当前load的{​​{1}}事件。鉴于插入延迟(通过等待window事件),click事件已被触发。您可以将函数附加到window.onload事件,但它永远不会被触发。

最好将函数调用直接放入load元素:

script

这意味着jQuery将在添加到文档中时执行脚本。

答案 1 :(得分:1)

您需要更改:

<script language="JavaScript">

到:

<script type="text/javascript">

您需要更改:

function callhello() {
    alert('<?php echo $_POST['word']; ?>');
    //many other code, for a test, I moved them. and replace a alert call.
}

为:

function callhello() {
    alert('<?php echo $_POST["word"]; ?>');
    //many other code, for a test, I moved them. and replace a alert call.
}

您需要更改:

<body onload="JavaScript:callhello()">

为:

<body onload="javascript://callhello();">