在ajax成功之前调用document.ready

时间:2014-03-06 05:40:41

标签: jquery ajax

我希望在document.ready获得成功后调用ajax函数。

jsondatachart.js脚本中我使用了一个ajax方法,在其中我从excel表中获取数据并存储在窗口。ChartData中,如下所示。来自excel的所有数据都存储在window.ChartData中,但这是在调用document.ready()函数之后发生的。

//“jsondatachart.js”脚本

$.ajax({
        type: "GET",
        url: "Data.csv",
        dataType: "text",
        success: function(data) {window.chartData=data;}
     });

html页面中我引用了该脚本jsondatachart.js,脚本被加载,调试器被$ .ajax命中。但是只有在执行document.ready函数之后,success函数才会生效。所以主页面中使用的window.ChartData显示未定义

我在IE浏览器中遇到此问题,firefox工作正常。

 <html>
 <head>
    <script src="Scripts/jquery-1.10.1.min.js" type="text/javascript"></script>
    <script src="Scripts/jquery.globalize.min.js" type="text/javascript"></script>
    <script src="Scripts/jsondatachart.js" type="text/javascript"></script>


</head>
<body>
   <div id="container"> </div>
    <script type="text/javascript" language="javascript">

        $(function () {
         // var data=window.ChartData; (showing window.ChartData is undefine)
          });

简单来说,   我希望只有在ajax中的成功函数被触发后才应调用$(function(){}),以便我可以在window.ChartData函数中使用document.ready()

提前致谢

1 个答案:

答案 0 :(得分:2)

首先,请理解这两件事之间的差异,

  1. 文档 .ready和 ajax 完全是independent。它们用于不同目的。

  2. 当你的dom完全加载时,会调用
  3. document.ready 函数。它与 ajax 没有任何关联。

  4. Ajax 用于从Server side获取数据。

    如果您需要对ajax success执行任何操作,请执行以下操作,

    $( document ).ready(function() {
    
        alert("DOM is ready");
    
    });
    
    function ajaxFunction(){
    
        $.ajax({
            type: 'POST',
            url: "Your URL",
            data : "param="+"paramValue",
            dataType: 'html',
            success: function(result) {
                doWhatEver();
            },
            error: function(e){
                //alert('Error in Processing');
            }
    
        });
    }
    
    
    function doWhatEver() {
          // Do your work Here.
    }
    
  5. 希望它有所帮助。