【问题标题】:document.ready is called before the ajax Get successdocument.ready 在 ajax 之前调用 Get 成功
【发布时间】:2014-03-07 14:25:23
【问题描述】:

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

jsondatachart.js 脚本中,我使用了一种ajax 方法,其中我从excel 工作表中获取数据并存储在window.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 函数执行后才触发成功函数。所以主页中使用的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)
          });

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

提前致谢

【问题讨论】:

  • 文档就绪状态不依赖于 ajax 请求...所有依赖于 ajax 请求返回值的操作都必须在成功处理程序中
  • 你应该把需要window.ChartData的代码放在或者调用成功函数里面。有关如何构建代码的更多信息,请参阅How to return the response from an AJAX call?
  • 请检查我的答案并告诉我。

标签: jquery ajax


【解决方案1】:

首先,请理解两者的区别,

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

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

  3. 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.
    }
    

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    相关资源
    最近更新 更多