我尝试通过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>
答案 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();">