我有一个使用Google Closure编译器编译的Javascript文件,它给了我这个错误TypeError: f is undefined
。当我查看编译的代码时,它不可能理解,但其中的一部分被注释掉了。我真的为难我得到这个错误,但我怀疑它与下面的脚本(这是我得到这个错误后编辑的唯一的事情)有关。来自Google Closure编译文件的TypeError
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);
我刚才读您的消息之前实现这一权利,但我非常欣赏你的解释。这个让我疯狂。有什么方法可以使请求同步吗?还是必须重新排列脚本? – niftygrifty
@niftygrifty你必须重新安排,因为它不好使用同步请求(不知道goog.netXhrIo是否支持它)。你可以在'if(request.isSuccess())'块中做出响应。 – HMR