За последние 24 часа нас посетили 16698 программистов и 1646 роботов. Сейчас ищет 1071 программист ...

Ajax + Php (curl) , image выходит кракозябрами

Тема в разделе "JavaScript и AJAX", создана пользователем ВеселыйГубернатор, 27 апр 2015.

  1. ВеселыйГубернатор

    С нами с:
    27 апр 2015
    Сообщения:
    6
    Симпатии:
    0
    Всем Хаюшки! Пытаюсь вывести изображение(curl) которое обновляется каждую секунду,
    но выходят кракозябры, �PNG  IHDR���. Большая просьба помочь, много что перепробовал, менял header, content type и др.

    код HTML +Ajax
    Код (Text):
    1. <html>  
    2. <head>  
    3. <meta charset="utf-8" >
    4. <script type="text/javascript" src="jquery.js"></script>  
    5. <title> test</title>
    6. </head>  
    7. <body>      
    8. <div id="content" type="text/javascript"></div>
    9.  
    10. <script>  
    11.         function show()  
    12.         {  
    13.             $.ajax({  
    14.                url: "get_map.php",  
    15.                cache: false,  
    16.                success: function(html){  
    17.                $("#content").html(html);  
    18.                 }  
    19.             });  
    20.         }  
    21.      
    22.         $(document).ready(function(){  
    23.             show();  
    24.             setInterval('show()',1000);  
    25.         });  
    26. </script>
    27.  
    28. </body>  
    29. </html>
    Код PHP curl

    Код (Text):
    1.  
    2.  
    3. <?php
    4. header('Content-type: image/png');
    5. define('ZABBIX_URL', 'http://localhost');
    6. define('ZABBIX_USER', '***');
    7. define('ZABBIX_PW', '***');
    8. define('MAP_URL', ZABBIX_URL . '***');
    9. define('MAP_USER', '***');
    10. define('MAP_PASS', '***');
    11. if($_SERVER['PHP_AUTH_USER'] != MAP_USER || $_SERVER['PHP_AUTH_PW'] != MAP_PASS)
    12. {
    13.     header('WWW-Authenticate: Basic realm=" @( * O * )@ "');
    14.     header('HTTP/1.0 401 Unauthorized');
    15.     exit;
    16. }
    17. set_time_limit(30);
    18. chdir(dirname(__FILE__));
    19. $ch = curl_init();
    20. curl_setopt($ch, CURLOPT_URL, ZABBIX_URL . 'index.php');
    21. curl_setopt($ch, CURLOPT_POST, 1);
    22. curl_setopt($ch, CURLOPT_POSTFIELDS, array('name'=>ZABBIX_USER, 'password'=>ZABBIX_PW,'enter'=>'Sign in', 'autologin'=>1));
    23. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    24. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
    25. curl_setopt($ch, CURLOPT_HEADER, 1);
    26. curl_setopt($ch, CURLOPT_COOKIEJAR, "./cookie.txt");
    27. curl_setopt($ch, CURLOPT_COOKIEFILE, "./cookie.txt");
    28. $t = curl_exec($ch);
    29. curl_setopt($ch, CURLOPT_URL, MAP_URL);
    30. curl_setopt($ch, CURLOPT_HEADER, 0);
    31. $file = curl_exec($ch);
    32. echo $file;
    33. curl_close($ch);
    34. ?>
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    так может просто тег img с src до скрипта с curl указать
     
  3. ВеселыйГубернатор

    С нами с:
    27 апр 2015
    Сообщения:
    6
    Симпатии:
    0
    имеете ввиду в файле get_map.php <img src="<?php ..... ?>"> </img>, сделал так , снова символы выводит , только другие ˜1cЖЊQЈFхы‰
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    а когда переходишь на get_map.php картинку видишь? сперва так добейся нормально работы, и как ты видишь содержание файла если грузил изображение через img тег?
     
  5. ВеселыйГубернатор

    С нами с:
    27 апр 2015
    Сообщения:
    6
    Симпатии:
    0
    Когда перехожу на get_map.php картинка есть, когда перехожу на страницу html то вижу как символы ...��... обновляются по заданному интервалу,
    второй вопрос не понял.
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    В html картинку так подключил: <img src='get_map.php'> или по другому?
     
  7. ВеселыйГубернатор

    С нами с:
    27 апр 2015
    Сообщения:
    6
    Симпатии:
    0
    когда в html пробовал подключать картинку <img src='get_map.php' id="content"></img> то она выводится 1 раз и не обновляется, код html и php в первом сообщении.
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    вот если через тег работает, дай img тегу id и обновляй только src атрибут, ну и чтобы не кэшировалось, отправляй заголовки или добавь случайный параметр get_map.php?nocache=23 или http://api.jquery.com/jquery.ajax/ смотри cache
     
  9. ВеселыйГубернатор

    С нами с:
    27 апр 2015
    Сообщения:
    6
    Симпатии:
    0
    cделал, выводит пустоту..

    Код (Text):
    1. <img src="" id="content"></img>
    2.  
    3. <script>  
    4.         function show()  
    5.         {  
    6.             $.ajax({  
    7.                url: "get_map.php",  
    8.                cache: false,  
    9.                success: function(html){  
    10.                $("#content").attr('src','get_map.php?'+ Math.random());  
    11.                 }  
    12.             });  
    13.         }  
    14.               $(document).ready(function(){  
    15.             show();  
    16.             setInterval('show()',1000);  
    17.         });  
    18. </script>
    Код (Text):
    1. <?php
    2. header('Content-type: image/png');
    3. header("Cache-Control: no-cache, must-revalidate");
    4. define('ZABBIX_URL', 'http://172.16.3.16/zabbix/');
    5. define('ZABBIX_USER', 'api');
    6. define('ZABBIX_PW', 'api');
    7. define('MAP_URL', ZABBIX_URL . 'map.php?noedit=1&sysmapid=1');
    8. define('MAP_USER', 'map');
    9. define('MAP_PASS', 'map');
    10.  
    11. if($_SERVER['PHP_AUTH_USER'] != MAP_USER || $_SERVER['PHP_AUTH_PW'] != MAP_PASS)
    12. {
    13.     header('WWW-Authenticate: Basic realm=" @( * O * )@ "');
    14.     header('HTTP/1.0 401 Unauthorized');
    15.     exit;
    16. }
    17. set_time_limit(30);
    18. chdir(dirname(__FILE__));
    19. $ch = curl_init();
    20. curl_setopt($ch, CURLOPT_URL, ZABBIX_URL . 'index.php');
    21. curl_setopt($ch, CURLOPT_POST, 1);
    22. curl_setopt($ch, CURLOPT_POSTFIELDS, array('name'=>ZABBIX_USER, 'password'=>ZABBIX_PW,'enter'=>'Sign in', 'autologin'=>1));
    23. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    24. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
    25. curl_setopt($ch, CURLOPT_HEADER, 1);
    26. curl_setopt($ch, CURLOPT_COOKIEJAR, "./cookie.txt");
    27. curl_setopt($ch, CURLOPT_COOKIEFILE, "./cookie.txt");
    28. $t = curl_exec($ch);
    29. curl_setopt($ch, CURLOPT_URL, MAP_URL);
    30. curl_setopt($ch, CURLOPT_HEADER, 0);
    31.  
    32.  
    33. $file = curl_exec($ch);
    34.  
    35. echo $file;
    36. curl_close($ch);
    37.  
    38. ?>
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    а по какому пути идёт запрос картинки? может так надо attr('src','/get_map.php?'

    и функцию сократи
    Код (PHP):
    1. function show()  
    2. { 
    3.     $("#content").attr('src','/get_map.php?'+ Math.random());  
    4. }
     
  11. ВеселыйГубернатор

    С нами с:
    27 апр 2015
    Сообщения:
    6
    Симпатии:
    0
    большое спасибо за помощь, после того как сократил код - получилось! ура)