2015-12-11 11 views
5

私はいつか私がリフレッシュしようとすると、インターネットを得たので、それが仕事ですが、それは十分に滑らかではないようで、私は私の機能の下にテストするために、すでにまし アヤックスますcurl_setopt PHPを使用して別のサーバからのクエリデータだと少し遅い私は決してdata.Howを持っていないfirebugをチェックするときFirefox私は以下のようにjsonが対応しています。私はこの応答を行う方法がわからないので、私は今捕まってしまったんだcurl_setoptとAjax jqueryを使用していつかデータを取得できないのはなぜですか?

"<html><head> 

<meta http-equiv="refresh" content="0;url=http:MyPartnerWebsite!queryLuckNumberRecordByPeriods.action?gwqqnhmpepceiqqn"> 

<meta http-equiv="pragma" content="no-cache"> 

<meta http-equiv="expires" content="-1"> 

</head><body></body></html> 

" 

* *

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; 
    } 
} 

は助けてください

$.ajax({ 
    method: "GET", 
    url: "<?PHP echo base_url('getcurrentday'); ?>", 
    dataType: "JSON", 
    beforeSend: function (xhr) { 
    }, 
    success: function (data, textStatus, jqXHR) { 
     $(".loading").html(""); 
     if (data.res !== 200) { 
      $("<p>Errors type:"+data.res+"</p>").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"); 
     }) 
    } 
    } 
}); 

私自身のサーバーからデータをフェッチするためのjQueryのAjaxです。

答えて

1

あなたのajaxコールにタイムアウトが発生していると思われます。そのため、常に動作しているとは限りません。あなたはajaxのタイムアウト設定を増やすことができます。

さらに、error関数を追加すると、タイムアウトなどのエラーが発生したときを確認できます。それでも放火犯で応答を参照してください

$.ajax({ 
    //your ajax code here... 
    error: function(jqXHR, textStatus, errorThrown) { 
     console.log(textStatus, errorThrown); 
    }, 
    timeout: 10000 // sets timeout to 10 seconds 
}); 

理由は、ブラウザがとにかくさえタイムアウトに、サーバの応答を受信しますが、それはあなたのjqueryのコードに到達しないだろうということです。

+0

どうすればいいですか? if(data.data == false){ getdata(); //私は応答が偽で、データが ''であればAjaxをリロードします。 }それは動作しますか函ない()もAjaxの機能 –

+1

ちょうど機能でAJAX呼び出しを入れて、データが関数を呼び出すこと「」であれば、成功に確認してください。エラーが発生した場合は、必要に応じて電話をかけることもできます。 –

+0

私の上記の機能はIOSでうまく動作しますか?私の親切なスタッフは仕事がiPhoneでうまくいかないと言っていたからです。 –