Как выполнить запись данных cURL и распечатать ответ с помощью JavaScript / jQuery?

#javascript #php #jquery #curl

Вопрос:

У меня есть рабочий PHP-код curl, я не могу получать текущие данные с помощью PHP, потому что не хочу обновлять страницу, чтобы видеть обновленные данные. Я хочу добавить setInterval опцию с помощью JavaScript / jQuery. таким образом, в таблице html будут обновленные данные. итак, мой вопрос в том, как я могу использовать cURL с помощью JavaScript ?

 curl_close($curl); $curl = curl_init(); $data = array(0 =gt; array("number" =gt; "CM419380522IN ", "carrier" =gt; "09021,")); $data = json_encode($data);  curl_setopt_array($curl, array(  CURLOPT_URL =gt; 'https://api.17track.net/track/v1/gettrackinfo',  CURLOPT_RETURNTRANSFER =gt; true,  CURLOPT_ENCODING =gt; '',  CURLOPT_MAXREDIRS =gt; 10,  CURLOPT_TIMEOUT =gt; 0,  CURLOPT_FOLLOWLOCATION =gt; true,  CURLOPT_HTTP_VERSION =gt; CURL_HTTP_VERSION_1_1,  CURLOPT_POST =gt; true,  CURLOPT_POSTFIELDS =gt; $data,  CURLOPT_HTTPHEADER =gt; array(  '17token: A967106205AA3133FCF520B4DE352161',  'Content-Type: application/json'  ), ));  $response = curl_exec($curl); curl_close($curl);  $arr = json_decode($response, true);  //echo "lt;pregt;"; //print_r($arr); //echo "lt;pregt;";   $items = $arr['data']['accepted']; echo 'lt;tablegt;'; foreach ($items as $item) {   // Loop through $item['origin_info']['trackinfo']  foreach ($item['track']['z1'] as $step) {  echo 'lt;trgt;';   // 'id' is an element of $item  echo 'lt;tdgt;' . $item['number'] . 'lt;/tdgt;';   // 'tracking_number' is an element of $item  //echo 'lt;tdgt;' . $item['tracking_number'] . 'lt;/tdgt;';   // 'Details' is an element of $step  echo 'lt;tdgt;' . $step['a'] . 'lt;/tdgt;';   // 'checkpoint_status' is an element of $step  echo 'lt;tdgt;' . $step['c'] . 'lt;/tdgt;';   // 'substatus' is an element of $step  echo 'lt;tdgt;' . $step['d'] . 'lt;/tdgt;';   // 'substatus' is an element of $step  echo 'lt;tdgt;' . $step['z'] . 'lt;/tdgt;';   }    echo 'lt;/trgt;'; } echo 'lt;/tablegt;';   

Я попробовал следующий код. но не удалось ввести данные в таблицу.

 const settings = {  "async": true,  "crossDomain": true,  "url": "https://order-tracking.p.rapidapi.com/trackings/realtime",  "method": "POST",  "headers": {  "content-type": "application/json",  "x-rapidapi-host": "order-tracking.p.rapidapi.com",  "x-rapidapi-key": "c1b4466148msh84c499d6e5590c4p155c1bjsne8487b7633cc"  },  "processData": false,  "data": {  "tracking_number": "CM436202938IN",  "carrier_code": "india-post"  } };  setInterval(function() { $.ajax(settings).done(function (response) { //console.log(response);  var sdata = '';  $('#trackinfo').empty();  $.each(response, function(key,value){  sdata  = 'lt;trgt;';  sdata  = 'lt;tdgt;' value.data.items.tracking_number 'lt;/tdgt;';  sdata  = 'lt;tdgt;' value.data.items.origin_info.trackinfo.z9.z1.date 'lt;/tdgt;';  sdata  = 'lt;tdgt;' value.data.items.origin_info.trackinfo.z9.z1.Details 'lt;/tdgt;';  sdata  = 'lt;tdgt;' value.data.items.origin_info.trackinfo.z9.z1.checkpoint_status 'lt;/tdgt;';   sdata  = 'lt;/trgt;';  });  $('#trackinfo').append(sdata);  }); }, 50000); 
 lt;table class=""gt; lt;theadgt; lt;trgt; lt;thgt;Tracking IDlt;/thgt; lt;thgt;Update Datelt;/thgt; lt;thgt;Current Citylt;/thgt; lt;thgt;Current Statuslt;/thgt; lt;/trgt; lt;/theadgt; lt;tbody id="trackinfo"gt;  lt;/tbodygt;  lt;/tablegt; 

Комментарии:

1. То же самое, что и со всем остальным, что происходит на стороне сервера — ваш клиентский скрипт должен выполнить HTTP-запрос, т. Е. AJAX/fetch.

2. Если вы говорите, что код curl работает, почему в нем есть комментарий «здесь ошибка»?

3. привет, CBroe, я попробовал и обновил код, но все еще не могу получить дату.

4. привет, АДисон, комментарий на php был написан, когда я исправлял php-код. я обновил код.

5. Ваш PHP-код возвращает HTML, а не JSON. Так что пытаться пройти через это бессмысленно. Просто добавьте сгенерированный контент на свою страницу с помощью JavaScript. Либо это, либо измените PHP, чтобы он возвращал JSON в требуемом формате