#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 в требуемом формате