Javascript 对象文字未定义
Q.js文件Javascript 对象文字未定义,javascript,Javascript,Q.js文件 Q = {}; Q.stringFile = []; Q.file = "CSS.txt"; Q.getData = function(Q.file){ $.get(Q.file, function(data){ var str = data; Q.stringFile = str.split("\n"); return Q.stringFile; }); } <head> <scr
Q = {};
Q.stringFile = [];
Q.file = "CSS.txt";
Q.getData = function(Q.file){
$.get(Q.file, function(data){
var str = data;
Q.stringFile = str.split("\n");
return Q.stringFile;
});
}
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="Q.js"></script>
<script type="text/javascript">
var d = Q.getData(Q.file);
alert(d);
</script>
</head>
<body>
</body>
</html>
a.html文件
Q = {};
Q.stringFile = [];
Q.file = "CSS.txt";
Q.getData = function(Q.file){
$.get(Q.file, function(data){
var str = data;
Q.stringFile = str.split("\n");
return Q.stringFile;
});
}
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="Q.js"></script>
<script type="text/javascript">
var d = Q.getData(Q.file);
alert(d);
</script>
</head>
<body>
</body>
</html>
var d=Q.getData(Q.file);
警戒(d);
警报不输出
错误:未定义Q;
意外标记
如何解决此问题???我认为问题在于方法定义:
Q.getData = function() {
var that = this;
$.get(that.file, function(data){
var str = data;
that.stringFile = str.split("\n");
// below return has no purpose in an async request
// return Q.stringFile;
alert(that.stringFile);
});
}
运行Q.getData()后
您的Q.stringFile
将包含您的数据
另外,由于此函数不返回任何值,您必须将警报放入回调中。我认为问题在于方法定义:
Q.getData = function() {
var that = this;
$.get(that.file, function(data){
var str = data;
that.stringFile = str.split("\n");
// below return has no purpose in an async request
// return Q.stringFile;
alert(that.stringFile);
});
}
运行Q.getData()后
您的Q.stringFile
将包含您的数据
此外,由于此函数不返回任何值,您必须将警报放入回调中。您的:
Q.getData = function(Q.file) {
无效,这是定义命名参数的地方,而不是传递它们的地方。您的:
Q.getData = function(Q.file) {
无效,这是定义命名参数的地方,而不是传递它们的地方。正如我在评论中所说的,您不能从Ajax调用返回数据,因为Ajax调用是异步的。您必须使函数接受回调,如:
Q.getData = function(file, callback){
$.get(file, function(data){
var stringFile = data.split("\n");
callback(stringFile);
});
};
然后用以下词语来称呼它:
Q.getData(Q.file, function(d) {
alert(d);
});
关于错误:这一行有语法错误
Q.getData = function(Q.file)
Q.file
在此处无效。浏览器无法分析和处理该文件,因此不会定义Q
我的印象是,您应该在继续之前先返回数据。正如我在评论中所说的,您不能从Ajax调用返回数据,因为Ajax调用是异步的。您必须使函数接受回调,如:
Q.getData = function(file, callback){
$.get(file, function(data){
var stringFile = data.split("\n");
callback(stringFile);
});
};
然后用以下词语来称呼它:
Q.getData(Q.file, function(d) {
alert(d);
});
关于错误:这一行有语法错误
Q.getData = function(Q.file)
Q.file
在此处无效。浏览器无法分析和处理该文件,因此不会定义Q
我的印象是,在你继续之前,你应该首先考虑。你的问题在于:
Q.getData = function(Q.file) {
函数(
之后的部分是一个正式的参数列表,只能包含有效的标识符。它们不能包含“.”字符。您的问题在于:
Q.getData = function(Q.file) {
函数(
后的部分是一个正式的参数列表,只能包含有效的标识符。它们不能包含“.”字符。不能将对象属性用作函数参数:Q.getData=function(Q.file){
。在这种情况下,由于闭包,根本不需要参数,您可以从getData
函数中读取Q.file
您的警报返回未定义的原因是您正在进行异步AJAX调用,它不会返回任何内容,因此d未定义。如果您想从AJAX调用返回某些内容,则需要进行同步调用
但是,更好的解决方案是使用成功处理程序:
var Q = {}; // Without the var it is an implied global. In this case you look like you want a global, but it's still good form to explicitly define it in the global namespace.
Q.stringFile = [];
Q.file = "CSS.txt";
Q.getData = function() {
$.get(Q.file, function(data) {
var str = data;
Q.stringFile = str.split("\n");
return Q.stringFile;
}).success(function (d) { // This fires once the data has arrived
alert(d);
});
}; // you should have a ; here
不能将对象属性用作函数参数:
Q.getData=function(Q.file){
。在这种情况下,由于闭包,根本不需要参数,您可以从getData
函数内部读取Q.file
您的警报返回未定义的原因是您正在进行异步AJAX调用,它不会返回任何内容,因此d未定义。如果您想从AJAX调用返回某些内容,则需要进行同步调用
但是,更好的解决方案是使用成功处理程序:
var Q = {}; // Without the var it is an implied global. In this case you look like you want a global, but it's still good form to explicitly define it in the global namespace.
Q.stringFile = [];
Q.file = "CSS.txt";
Q.getData = function() {
$.get(Q.file, function(data) {
var str = data;
Q.stringFile = str.split("\n");
return Q.stringFile;
}).success(function (d) { // This fires once the data has arrived
alert(d);
});
}; // you should have a ; here
您无法从Ajax调用返回数据。可能重复为什么不?以及为什么Q未定义?html似乎没有看到Q对象…因为Ajax调用是异步的,即在外部函数
getData
返回后,回调将被调用较长时间。您无法从Ajax调用返回数据。可能重复为什么不是??为什么Q是未定义的??似乎html没有看到Q对象……因为Ajax调用是异步的,也就是说,在外部函数getData
返回后,回调将被调用很久。但是为什么Q是未定义的??html没有看到Q.js文件??因为这个语法错误。如果删除它,将定义Q
如果出现此错误,浏览器无法正确解析文件。非常感谢!!我不知道dot形式参数规则和不可返回的ajax异步调用..我现在学习..谢谢!!但是为什么Q未定义?html没有看到Q.js文件?因为此语法错误。如果删除它,将定义Q
。如果出现此错误,浏览器ser无法正确解析文件。非常感谢!!我不知道dot形式参数规则和不可返回的ajax异步调用..我现在学到了..谢谢!!