Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
document.ready jquery代码中未定义Javascript函数_Javascript_Jquery_Function_Scope_Anonymous Function - Fatal编程技术网

document.ready jquery代码中未定义Javascript函数

document.ready jquery代码中未定义Javascript函数,javascript,jquery,function,scope,anonymous-function,Javascript,Jquery,Function,Scope,Anonymous Function,我已将jquery包含在脚本中,现在正在尝试制作此上载进度条脚本的jquery版本: 以下是我的尝试: $(document).ready(function () { function startProgress(uid) { console.log("starting progress"); setTimeout('getProgress("' + uid + '")', 500); //some more stuff }

我已将jquery包含在脚本中,现在正在尝试制作此上载进度条脚本的jquery版本:

以下是我的尝试:

$(document).ready(function () {

    function startProgress(uid) {
        console.log("starting progress");
        setTimeout('getProgress("' + uid + '")', 500);
        //some more stuff
    }

    function getProgress(uid) {
        console.log("getting progress");
        $.ajax({
            type: "GET",
            url: 'upload_getprogress.php?uid=' + uid,
            success: function (msg) {
                progress = msg;
                setTimeout('getProgress("' + uid + '")', 100);
                // do some more stuff
            }

        });
    }

    $('#upload').submit(function () {
        startProgress('<?php echo $uid; ?>');
    });
});
$(文档).ready(函数(){
函数startProgress(uid){
console.log(“启动进度”);
setTimeout('getProgress('uid+'),500);
//再来点东西
}
函数getProgress(uid){
console.log(“取得进展”);
$.ajax({
键入:“获取”,
url:'upload_getprogress.php?uid='+uid,
成功:功能(msg){
进度=味精;
setTimeout('getProgress('+uid+'),100);
//多做点事
}
});
}
$('#upload')。提交(函数(){
startProgress(“”);
});
});
但我得到了一个错误:

未捕获引用错误:未定义getProgress

怎么样

我试图将函数放在
document.ready()
之外,但没有用。我甚至在
startProgress
内部的开头定义了
getProgress
,但它似乎无法识别该函数。我做错了什么?

getProgress()
是在调用
document.ready()
的范围内定义的。如果将字符串参数传递给
setTimeout()
,则将在全局范围内对其进行计算。所以从那里看不到您的方法

您可以更改代码,以使用以下匿名函数:

 setTimeout( function() {
   getProgress( uid); 
 }
 , 100);
请使用:

setTimeout(function() { getProgress( uid ); }, 500 )

这应该可以正常工作。

函数getProgress(uid)在
$(document).ready()中定义,因此它在私有范围而不是全局范围内。所以要使用它,只需将其移动到全局。

无法进行双重检查,但我猜这是因为提交回调的范围。试着按照这些思路去做

$(document).ready(function(){   
    $('#upload').submit(function(){ window.startProgress('<?php echo $uid; ?>'); });
});

var startProgress = function(uid) {
       console.log("starting progress");
       setTimeout('getProgress("' + uid + '")', 500);
       //some more stuff
};

var getProgress = function(uid) {
    console.log("getting progress");
    $.ajax({  type: "GET", 
        url: 'upload_getprogress.php?uid=' + uid, 
        success: function(msg) {   
            progress = msg;
            setTimeout('getProgress("' + uid + '")', 100);
                    // do some more stuff
        }

    });
};

window.startProgress = startProgress;
window.getProgress = getProgress;
$(文档).ready(函数(){
$('#upload').submit(函数(){window.startProgress(''';});
});
var startProgress=函数(uid){
console.log(“启动进度”);
setTimeout('getProgress('uid+'),500);
//再来点东西
};
var getProgress=函数(uid){
console.log(“取得进展”);
$.ajax({type:“GET”,
url:'upload_getprogress.php?uid='+uid,
成功:函数(msg){
进度=味精;
setTimeout('getProgress('+uid+'),100);
//多做点事
}
});
};
window.startProgress=startProgress;
window.getProgress=getProgress;

如果您像
setTimeout('getProgress('+uid+'),500)
,

必须将函数
getProgress
置于全局范围内, 如果使用setTimeout函数,如
setTimeout(getProgress(uid),500)


您可以在jQuery ready函数中定义函数getProgress

setTimeout函数语法错误,因此语法正确,可以完美地工作。这将使用文本字符串调用getProgress<代码>获取进度(“+uid+”)
您不需要将函数定义为变量,然后再定义
window.function=function
,但除此之外,这应该可以实现,所以+1:)谢谢,它现在可以工作了。但我的代码不起作用的原因是什么?早些时候,我确实尝试将函数保留在
document.ready()
之外,并将
$('#upload').submit()代码保留在内部,但即使这样也不起作用。简单地将函数的定义更改为
var=function()
会有什么不同?