我编写了以下JavaScript函数,它非常简单,它需要一个ID,然后将其发送到PHP页面,该页面回显了一些JSON。它通过GET将ID传递到PHP页面。
例如,如果我要发出以下GET请求:/processing/getAccountInfo.php?id=5
,它将返回此(从数据库获取):{"username":"carefulnow","profileImg":null}
。这是正确的,所以我知道我的PHP工作正常。
我最初调用AJAX的JavaScript代码现在需要处理它,将其回显并检查错误。如果PHP函数遇到任何错误,则返回的JSON将包含“errorMsg”,其中包含遇到的PHP异常的名称,包括特定消息(Exception::getMessage()
)。示例错误结果为{"errorMsg":"PDOException: some error..."}
。
function getAccountInfo(id) {
var loading = document.getElementById("loading");
var inner = document.getElementById("accInfInner");
var name = document.getElementById("accInfName");
var img = document.getElementById("accInfImg");
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState === 4 && this.status === 200) {
try {
var response = JSON.parse(this.responseText);
if (response.errorMsg === undefined) {
if (response.username === undefined || response.profileImg === undefined) {
throw new Error("Could not get the username and profile image. Try logging in then back out.");
}
name.innerHTML = response.username;
// The profile image is not required.
if (response.profileImg !== null) {
img.src = response.profileImg;
} else {
img.src = "/assets/img/defaultuser.jpg";
}
loading.style.display = "none";
inner.style.display = "block";
} else {
throw new Error(response.errorMsg);
}
} catch (exception) {
inner.innerHTML = "Error. Hover for details.";
inner.title = exception.message;
}
}
};
xmlhttp.open("GET", "/processing/getAccountInfo.php?id=" + id, true);
xmlhttp.send();
}
然而,问题是throw语句不起作用。如果从PHP抛出错误,则没有任何反应(控制台中没有错误)!我的IDE(PHPStorm 2017.1)给出了以下错误:“在当地捕获的'异常'”,在搜索批次之后,我找不到其他人有同样的问题。与GET请求有关的是异步,还是我看不到更简单的东西?