我对网页脚本有些新意。我已经习惯了Java try-catch风格,而Javascript似乎也很相似。但是,当我尝试使用它时,我得到的结果并不完全相同。这是我的try-catch块:
try {
loadAllInfo(<?php echo get_students_from_group();?>);
} catch (exception) {
alert("Invalid data entered, please try again.");
window.location.href = "studentDisplayFromService.php";
} finally {
setHTMLStudentTable("all");
}
目标是,如果PHP请求失败(输入需要具有非常特定的语法,但在这种情况下,事先无法检查它),这会将用户带回输入网站,因为PHP请求发送返回无法解析为JSON的内容。当语法正确时,我的代码可以正常工作,但是当它不是,而不是捕获异常时,它会出现在控制台上:
SyntaxError:期望表达式,得到'<'(并且它显示问题所在的行,显然是这一行。)
我试过在try块中自己抛出异常,比如...
try {
loadAllInfo(<?php echo get_students_from_group();?>);
throw new exception("Error");
}
...在这种情况下捕获它,显示警报并将用户带回原始网站。
有什么可能导致这个问题或如何解决它的想法?我在这里找不到任何类似的问题:/
非常感谢你提前!
你需要像这样写:
JSON.parse('<?php echo json_encode(get_students_from_group());?>')
可在此处找到一些示例和详细说明:JSON.parse
如果你得到坏东西,你可能必须检查它是否在loadAllInfo()函数中有效。
在尝试使用它在Js中执行某些操作之前,最好在PHP函数get_students_from_group()中捕获该错误。正如您在评论中提到的那样,您将获得400状态代码作为响应。所以尽量抓住它。成功通话通常会返回200 http状态代码。
如果你需要使用file_get_contents(),你可以查看$http_response_header。
更好地使用cUrl进行更多控制:
<?php
$ch = curl_init('http://...');
curl_exec($ch);
if (!curl_errno($ch)) {
$info = curl_getinfo($ch); // ... Process information
}
curl_close($ch);
?>