jquery ajax, как вызвать событие onload на странице дескриптора? - PullRequest
1 голос
/ 18 мая 2011

Я пытаюсь опубликовать значение со страницы a на страницу b через jquery ajax.Но когда мне нужно событие onload на странице дескриптора.Я пробовал 2 способа, но все не удалось.Как правильно звонить или это баг?

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 ]

4 голосов
/ 18 мая 2011

Когда вы вставляете HTML в ваш документ, все скрипты выполняются с контекстом документа. Это означает, что window.onload относится к событию load текущего window. Учитывая, что вставка задерживается (ожиданием события click), событие window.onload уже было инициировано. Вы можете прикрепить функцию к событию load, но она никогда не сработает.

Вероятно, лучше поместить вызов функции прямо в элемент script:

<script type="text/javascript"> // the language attribute is deprecated
  callhello();
</script>

Это означает, что jQuery выполнит скрипт при его добавлении в документ.

1 голос
/ 18 мая 2011

Вам необходимо изменить:

<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();">
...