我是通过使用curl_setopt PHP和Ajax查询来自另一个服务器的数据 我已经测试了我的下面的功能它是工作但它似乎不够顺利,因为有时当我尝试刷新和互联网有点大慢我永远不会得到数据.当我在Firefox中检查firebug时,我发现如下json响应.
" "
*我现在被卡住了,因为我不知道如何应对这个问题*
private function http_code() { $ch = curl_init(); if (!$ch) { die("Couldn't initialize a cURL handle"); } $ret = curl_setopt($ch, CURLOPT_URL, "http://Mypartnerwebsite!queryLuckNumberRecordByPeriods.action"); $ret = curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $ret = curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $ret = curl_setopt($ch, CURLINFO_PRETRANSFER_TIME, 0.1); $ret = curl_setopt($ch, CURLINFO_HTTP_CODE, true); $ret = curl_setopt($ch, CURLOPT_PRIVATE, false); $ret = curl_setopt($ch, CURLOPT_TIMEOUT, 60); $ret = curl_exec($ch); $data; $res; if (empty($ret)) { $res = 0; $data = 0; // Partner server slow. curl_close($ch); } else { $info = curl_getinfo($ch); curl_close($ch); if (empty($info['http_code'])) { $res = 01; $data = 01; // Got empty date from partner server } else { if ($this->errorType($info['http_code']) == TRUE) { // errors type $data = $ret; $res = $this->errorType($info['http_code']); } else { $data = $ret; $res = 'unknowError'; } } } echo json_encode(array('res' => $res, 'data' => $ret)); }
这是一个检查知道什么类型的服务器错误响应的功能 目的我想检查我的伙伴服务器错误,我将这种错误发送到我的网站,以确保出现什么样的错误.
private function errorType($haystack) { $errors = array(404, 200, 201, 204, 500, 501, 502, 503, 504, 505, 100, 203); if (in_array($haystack, $errors)) { return $haystack; } else { return FALSE; } }
这是Jquery Ajax从我自己的服务器获取数据
$.ajax({ method: "GET", url: "", dataType: "JSON", beforeSend: function (xhr) { }, success: function (data, textStatus, jqXHR) { $(".loading").html(""); if (data.res !== 200) { $("Errors type:"+data.res+"
").appendTo(".errors"); } else { if (data.data == false) { getdata();// I want to reload Ajax if I got respond false and my data = ''; } $.each(eval(ldata), function (i, val) { $(val.anydata").appendTo(".result"); }) } } });
请帮忙.