我正在使用我自己创建的 API,我正在与之通信,我的代码如下。如果一切正常,API 将返回 json 以及标头“200 OK”。但是,如果连接断开,我会返回“502 Bad Gateway”作为标题。
到目前为止,'CURLOPT_HEADER' 在我的 php 脚本(见下文)中已设置为 false,但现在我已将其设置为 true,以便我可以接收标题并根据标题执行操作。在这里我需要帮助。
实际上,我有两件事需要帮助(它们是相互关联的):
如果我的 API 和源之间的连接正常,并且我在我的 php 脚本(如下所示)中将 CURLOPT_HEADER 设置为 false,那么一切都按预期工作。但是,如果我将其设置为 true,则实际的标头也会与 ajax 请求一起发回,这会返回错误:“Uncaught SyntaxError: Unexpected token H”(下面 js 代码中的第 10 行)。
如果我的 API 和源之间的连接断开,我不知道如何处理错误,因此 API 返回“502 Bad Gateway”。我希望 php 脚本通过 ajax 请求将该信息发送回,以便可以在 js 文件中进行处理。
所以,请在这里帮助我。提前致谢!
PHP:
$url = 'http://theurl.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
$response = curl_exec($ch);
if(!$response) {
// <--- ??
}
curl_close($ch);
echo json_encode($response);
JS:
1. $.ajax({
2. url:'./php/apihandling.php',
3. type:'post',
4. dataType:'json',
5. data:{
6. data: data
7. },
8. success: function(data) {
9. var content = JSON.parse(data);
10. console.log(content);
11. },
12. error: function (xhr, ajaxOptions, thrownError) {
13. console.log(xhr.status);
14. console.log(thrownError);
15. }
16. });