以下のコードを使用して、自分で作成した API と通信しています。すべてが正常に機能する場合、API は json とヘッダー '200 OK' を返します。ただし、接続が切断されている場合は、ヘッダーとして「502 Bad Gateway」を返します。
これまで、'CURLOPT_HEADER' は私の php スクリプトで false に設定されていましたが (以下を参照)、今は true に設定して、ヘッダーを受け取り、ヘッダーに応じてアクションを実行できるようにしました。ここで助けが必要です。
私は実際に助けが必要な2つのことを持っています(これらは互いに関連しています):
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. });