来自Google Closure编译文件的TypeError
TypeError from Google Closure compiled file
我有一个用Google Closure编译器编译的Javascript文件,它给了我这个错误TypeError: f is undefined
。当我看编译后的代码时,它是不可能理解的,但其中的一大块被注释掉了。我真的很困惑为什么会出现这个错误,但我怀疑这与下面的脚本有关(这是我收到这个错误后唯一编辑过的东西)。
var response;
var request = new goog.net.XhrIo();
goog.events.listen(request, "complete", function(){
if (request.isSuccess()) {
response = request.getResponseText();
console.log("Satus code: ", request.getStatus(), " - ", request.getStatusText());
} else {
console.log(
"Something went wrong in the ajax call. Error code: ", request.getLastErrorCode(),
" - message: ", request.getLastError()
);
}
});
request.send("load_vocab.php");
var rawVocab = response[rawVocab];
var optionVocab = response[optionVocab];
alert(rawVocab.length);
alert(optionVocab.length);
这里还有load_vocab.php…
try {
$conn = new PDO('mysql:host=localhost;dbname=tygrif_school', $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('SELECT word, translation, example_sentence_1 FROM vocabulary_game WHERE game_type = :game_type');
$stmt->execute(array('game_type' => 'target'));
while ($row = $stmt->fetch(PDO::FETCH_OBJ)) {
$data['rawVocab'][] = $row;
}
$stmt = $conn->prepare('SELECT word, translation FROM vocabulary_game');
$stmt->execute(array());
while ($row = $stmt->fetch(PDO::FETCH_OBJ)) {
$data['optionVocab'][] = $row;
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
echo json_encode($data);
您知道xhr请求是异步的吗?
这意味着,当您调用send时,您必须等待响应返回,您所做的就是尝试读取下一行的响应。您的引用也是一个问题,编译器将重命名rawVocab和optionVocab,但返回的数据不会被重命名,因此您需要引用ne8il指出的这些值。
var response;
var request = new goog.net.XhrIo();
goog.events.listen(request, "complete", function(){
if (request.isSuccess()) {
window['console'].log("Now the response returned, setting response variable");
response = request.getResponseText();
console.log("Satus code: ", request.getStatus(), " - ", request.getStatusText());
} else {
console.log(
"Something went wrong in the ajax call. Error code: ", request.getLastErrorCode(),
" - message: ", request.getLastError()
);
}
});
window['console'].log("Sending request");
request.send("load_vocab.php");
window['console'].log("Trying to read response");
var rawVocab = response['rawVocab'];
var optionVocab = response['optionVocab'];
上述代码的输出为:
Sending request
Trying to read response
Error
Now the response returned, setting response variable
我认为问题出在这里:
var rawVocab = response[rawVocab];
var optionVocab = response[optionVocab];
您没有正确引用您的属性访问器。试试这个:
var rawVocab = response['rawVocab'];
var optionVocab = response['optionVocab'];
相关文章:
- 如何播放部分音频文件
- 从桌面读取python文件时高亮显示代码
- Node.js,TypeError:xxx不是函数,在require'd文件
- 使用 jQuery.ajax 提交文件会给出 TypeError
- Casperjs:“TypeError: 'undefined' 不是一个函数”,如果在另一个文件中使用了 evalua
- TypeError:[].文件未定义.在jquery文件中发布
- TypeError:无法读取属性“”;值“;从未定义.(第9行,文件“代码”)
- 使用文件API trhown“读取JavaScript中的文件;TypeError:e未定义;
- 来自Google Closure编译文件的TypeError
- TypeError:无法读取属性“”;namedValues;从未定义.(第9行,文件“代码”)
- TypeError:无法读取属性'值'$http.get JSON文件时未定义的
- 文件系统Nodejs: "Uncaught TypeError: fs. js.writeFileSync不是
- 在Chai TDD中需要JS文件——TypeError:不是一个函数
- 当在单独的文件中包含javascript类时,未捕获的TypeError: undefined不是函数
- TypeError: $(. .).magnificPopup不是一个函数-当我改变文化时无法加载js文件
- 未捕获的TypeError: undefined不是函数'当把控制器/服务放在单独的js文件中时
- UglifyJS2在.array(“保留文件”)上抛出TypeError
- 使用JSON文件在HTML: Uncaught TypeError: data.forEach不是一个函数
- 通过套接字发送电子文件.io-stream失败'TypeError: Invalid non-string/bu
- 浏览器链接:无法调用返回值回调:TypeError:无法读取属性'文件'为null