Javascript 为什么在ajax调用后执行此函数时会停止工作?

Javascript 为什么在ajax调用后执行此函数时会停止工作?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有 .线路{ 填充:无; 笔画:钢蓝; 笔画宽度:2px; } var数据=[{“日期”:“10年5月1日”,“结束”:2},{“日期”:“12年5月1日”,“结束”:7}]; var result={//我们的响应的模拟版本 “javascript”:[”https://cdnjs.cloudflare.com/ajax/libs/d3/4.13.0/d3.js", "https://cdn.jsdelivr.net/gh/nottoobadbutgoodname/tester/chart

我有


.线路{
填充:无;
笔画:钢蓝;
笔画宽度:2px;
}
var数据=[{“日期”:“10年5月1日”,“结束”:2},{“日期”:“12年5月1日”,“结束”:7}];
var result={//我们的响应的模拟版本
“javascript”:[”https://cdnjs.cloudflare.com/ajax/libs/d3/4.13.0/d3.js", "https://cdn.jsdelivr.net/gh/nottoobadbutgoodname/tester/chart.js"
]
}
函数loadAll(resultt){//throwaway var resultt,因为我们正在使用模拟结果
控制台日志(“加载…”);
GetMultiScript=函数(arr){
var\u arr=$.map(arr,函数(scr){
返回$.getScript(scr);
});
_arr.push($.Deferred)(函数(Deferred){
$(延期。解决);
}));
返回$.when.apply($,_arr);
}
getMultiScripts(result.javascript.slice(0,-1)).done(函数(){
$("", {
src:result.javascript[result.javascript.length-1]
}).附于(“主体”);
});
}
函数main(){
$(文档).ready(函数(){
$.ajax({
url:“http://127.0.0.1:8000",
成功:loadAll
});
});
}
main();//不起作用
//loadAll(结果);//作品
直接运行loadAll(result)可以工作,但当我尝试使用ajax调用时,它会以静默方式失败。本质上,ajax调用获取一些.js文件,然后加载这些文件。运行main将获取脚本,但似乎没有执行它们(两者的状态代码都是200,但运行main()时chart.js的状态代码变灰,而运行loadAll()时则变黑)

编辑:

这很奇怪。因为在这个例子中,我只是在嘲笑结果,我想我应该尝试一个实验:

基本上,我将其转换为一个JSONP调用,获取一些随机的JSONP数据,并将loadAll转换为jsonCallback函数。图表现在一直在加载,但不幸的是,对于“真实世界”,结果无法模拟,数据是JSON,而不是JSONP

为了清楚起见,我在real app和JSONP中尝试了JSON响应。JSON版本有时会加载,但并不一致。JSONP版本总是加载。

尝试在document ready中执行main():

$(document).ready(function () {
    main();
});

function main() {
    $.ajax({
      url: "http://127.0.0.1:8000",
      dataType: 'JSON',
    })
    .done(function(result)){
       loadAll(result);
    });
}

为什么您有
$(document).ready(函数(){
在您的
main()中)
?能否确保对main函数中127.0.0.1:8000的ajax调用返回200个正确的数组?@guradio将其完全删除,有时会导致图表加载,有时会导致不一致的结果。在ajax调用中指定其他信息,如
url:yoururl,键入:“POST”,数据类型:“JSON”,其中t数据类型是requesthmmmm的预期输出…如果我取出$(document).ready函数,则它有时会加载,但有时不加载,并且不一致。仍然不一致的结果不表示编辑您的答案…表示编辑带有更新的问题。抱歉;)
$(document).ready(function () {
    main();
});

function main() {
    $.ajax({
      url: "http://127.0.0.1:8000",
      dataType: 'JSON',
    })
    .done(function(result)){
       loadAll(result);
    });
}