如何从加载的ajax中使用js函数?

时间:2010-05-28 10:54:43

标签: javascript ajax

该函数在加载ajax的页面中,但我正在尝试调用函数

代码:

[ajax]

$.ajax({
type: "POST",
url: "loginpersonal.asp",
data: "id=<%=request("id")%>",
beforeSend: function() {
    $("#personaltab").hide();
},
success: function(msg){
    $("#personaltab").empty().append(msg);
},
complete: function() {
    $("#personaltab").slideDown();
},
error: function() {
    $("#personaltab").append("error").slideDown();
}
});

[js功能]

function GetCount(t){
    if(t>0) {
        total = t
    }
    else {
        total -=1;
    }
    amount=total;
                                            if(amount < 0){
        startpersonalbid();
    }
    else{
        days=0;hours=0;mins=0;secs=0;out="";
        days=Math.floor(amount/86400);//days
        amount=amount%86400;
        hours=Math.floor(amount/3600);//hours
        amount=amount%3600;
        mins=Math.floor(amount/60);//minutes
        amount=amount%60;

        secs=Math.floor(amount);//seconds
        if(days != 0){out += days +":";}
        if(days != 0 || hours != 0){out += hours +":";}
        if(days != 0 || hours != 0 || mins != 0){out += ((mins>=10)?mins:"0"+mins) +":";}
        out += ((secs>=10)?secs:"0"+secs) ;
        document.getElementById('countbox').innerHTML=out;
        setTimeout("GetCount()", 1000);
    }
}
window.onload=function(){
GetCount(<%= DateDiff("s", Now,privatesellstartdate&" "&privatesellstarttime ) %>);

所以在ajax的loginpersonal.asp结尾...如果它做了它想做的事情......我正试图再次调用函数GetCount()。

2 个答案:

答案 0 :(得分:0)

为安全起见,您无法调用ajax页面中包含的javascript。你需要调用外部javascript并将其评估到应用程序中。使用框架,许多框架会自动执行此操作。

答案 1 :(得分:0)

我不确定您使用的是哪个库,但我使用的HTML如下所示:

<div>
  My markup
</div>

<script type="text/javascript">

(function ($) {
   window.myFunction = function() {
      alert("Running from ajax loaded file");
   }
})(jQuery);

</script>

然后用jquery,我这样称呼它:

$("div#loadMe").load("/snippets/file.html", function(response, status, xhr){
  if (status == "error") {
    alert ("Error");
    return;
  }
  // do stuff
  window.myFunction();
});

当然,你可以使用你喜欢的任何库来进行ajax加载。我没有测试上面的代码,但它类似于我现在在生产中的代码。

我相信使用jquery,您必须加载ENTIRE文件,否则脚本将无法运行。如果仅定位文件中的某个元素,则不会加载或运行脚本。换句话说,您无法执行此操作:load("/snippets/file.html #container")并运行脚本。

另外,我认为你必须在同一个网站才能工作,除非你使用jsonp加载。