Подскажите как правильно скачать изображение и поместить его содержимое в переменную. Сделал get запрос и алерт для проверки... HTML: function Get_captcha() { var url = 'http://antigate.com/design/grey2/alogo.gif'; http.open("GET", url, false); http.onreadystatechange = function() { if (http.readyState == 4 && http.status == 200) { alert(http.responseText); var pic=http.responseText; } } http.send(null); } алерт выдает только 7 символов 'GIF89aq'. где остальное?
Остальное - это первый попавшийся нулевой байт, вся оставшаяся строка после которого алертом обрезается, изображение же двоичные данные содержит. В переменной содержимое все полностью, просто отображается оно частично до первого нулбайта.
а это изображение кодированное? Мне оно нужно для последующей отправки на распознавание "содержимое ФАЙЛА капчи, БЕЗ какого либо кодирования, целиком." Сейчас попробовал отправить картинку на распознавание HTML: function send_captcha() { var httpRequest = new XMLHttpRequest(); var boundary = '-----564AaB03x'; var requestBody = ("--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"method\"\r\n" + "\r\n" + "post\r\n" + "--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"key\"\r\n" + "\r\n" + 'КЛЮЧ' + "\r\n" + "--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"file\"; filename=\"alogo\.gif\"\r\n" + "Content-Type: image/gif\r\n" + "\r\n" + pic + "\r\n" + "--" + boundary + "--" ); httpRequest.open('POST', 'http://antigate.com/in.php', true); httpRequest.setRequestHeader('Content-Type','multipart/form-data; boundary=' + boundary); httpRequest.send(requestBody); if(httpRequest.readyState == 4) { if (httpRequest.status == 200) alert(httpRequest.responseText); } } вылетает ошибка ERROR_WRONG_FILE_EXTENSION - "Расширение файла либо не указано, либо не равно одному из следующих: jpg, gif или png". Как исправить?
Code: filename=\"alogo.gif \"\r\n Тут лишний пробел. А еще параметр ext нужно указать, судя по их API. Прочитай внимательнее, что отправлять надо.
В какой кодировке я получу данные если отправлю такой GET запрос ? HTML: var http = new XMLHttpRequest(); var url = 'http://antigate.com/design/grey2/alogo.gif'; http.open("GET", url, true); http.onreadystatechange = function() { if (http.readyState == 4 && http.status == 200) alert(http.responseText); } http.send(null);
<script> - переход по ссылке - нажатие на ссылку хай всем! Сильно не бейте ибо в javascript нихт фирштэйн. Проблема ерундовая, но джава совсем не юзал. Кроме баловства <script>alert(1234);</script>. А сейчас на форуме одном нашёл хрень такую, что можно накрутить себе рейтинг ибо не проверяются профили и можно туда впихнуть. Получается все кто на страницу зайдут - автоматом как-бы нажмут ссылку СПАСИБО ЗА ПОСТ и мне +1. Ну это пока из самого безобидного. Что на место alarm(1234); написать, чтобы типа ссылка нажалась? Детский вопрос, но уж извиняйте.
Code: <html> <body> <div id="div-id" name="div-name" onClick="alert(123)">Голосуй за меня!</div> <script> var tagId = 'div-id'; document.getElementById(tagId).click(); var tagName = 'div', tagNameEq = 0; // элемент DIV в доме по счёту document.getElementsByTagName(tagName)[tagNameEq].click(); var elName = 'div-name', elEq = 0; document.getElementsByName(elName)[elEq].click(); </script> </body> </html> Пример поиска элементов в доме. Подробнее про методы getElementsByName, getElementsByTagName, getElementById (а так же про getElementsByClassName) можно почитать на javascript.ru. Можешь не эмулировать клик по кнопке а напрямую вызывать метод добавления спасибки.
Наверно глупый вопрос, но все же) У меня подключен скрипт (<script type="text/javascript" src="style.js"></script>) Могу я получить его первую строчку? или хотя бы весь файл целиком через js?
Code: xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { alert(xmlhttp.responseText); } } this.xmlhttp.open("GET","style.js",true); this.xmlhttp.send(); http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first
Есть код Code: <ul class="table" id="id1"> <li onclick="a(this)" id="id2">1 раздел <ul> <li>1 подраздел</li> <li onclick="a(this)" id="id3">1 подраздел <ul> <li>1 подподраздел</li> <li>2 подподраздел</li> </ul> </li> <li>2 подраздел</li> <li>3 подраздел</li> </ul> </li> </ul> При нажатии на "1 раздел" вызывается функция a(), которая производит некие манипуляции, затем при нажатии на "1 подраздел" опять же вызывается эта функция, которая производит манипуляции уже с этим элементом... Вопрос собственно в том, что при нажатии на "1 подраздел" мы вызываем функцию не только у "1 подраздел" но и у "1 раздел". То есть событие onclick привязывается ко всему блоку LI, а не к тексту.... Причем надо чтобы при нажатии на "1 раздел" снова выполнялась функция для данного элемента. Так как же сделать чтобы событие onclick было вызвано при нажатии именно на текст "1 подраздел", а не на весь блок LI?
Code: <html> <head> <script> //кроссбраузерность для навешивания обработчика if (!document.attachEvent) { Object.prototype.attachEvent = function(ev, f) { if (ev.indexOf('on') >= 0) { ev = ev.substring(2); } this.addEventListener(ev, f, false); }; } // в ие нету такого метода, поэтому для него сделаем, так же может принимать вторым параметром название тега(ускоряет работу) if (!document.getElementsByClassName) { document.getElementsByClassName = function (className, tagName) { var obj = document.getElementsByTagName(tagName || '*'), elements = []; for (var i=0; i < obj.length; i++) { if (obj[i].className.indexOf(className) >= 0) { elements.push(obj[i]); } } return elements; } } //остановка действий после первого срабатывания function stopBubble (event) { if (event.stopPropagation) { event.stopPropagation() } else { event.cancelBubble = true } } </script> </head> <body> <ul class="table" id="id1"> <li id="id2" class="main">1 раздел <ul> <li>1 подраздел</li> <li id="id3">1 подраздел <ul> <li>1 подподраздел</li> <li>2 подподраздел</li> </ul> </li> <li class="sub">2 подраздел</li> <li class="sub">3 подраздел</li> </ul> </li> </ul> <script> //делаем обработчик для главных пунктов var mainEls = document.getElementsByClassName('main'); for (var i=0; i<mainEls.length; i++) { mainEls[i].attachEvent('onclick', function(ev) { (!ev.target) && (ev.target = ev.srcElement); alert(ev.target.className); //ну или то что должно происходить тут stopBubble(ev); }); } //обработчик для подпунктов var subEls = document.getElementsByClassName('sub'); for (var i=0; i<subEls.length; i++) { subEls[i].attachEvent('onclick', function(ev) { (!ev.target) && (ev.target = ev.srcElement); alert(ev.target.className); stopBubble(ev); }); } </script> </body> </html> Остаётся только выставить классы у пунктов/подпунктов. Этот(тот что после хтмл разметки идёт) код можно пихнуть в бошку, но тогда его надо пихать в обработчик по окончанию загрузки страницы. ev.target почти тоже самое что и this после передачи его через onClick, но ещё есть доп свойства и методы. зы. вместо алерта можешь поставить свою функцию a(ev.target)
Если у нас есть меню и подменю это прокатит... а если бесконечная вложенность?! Мы же не сможем по классам их отлавливать...
А если вложенность очень большая и у последующих подменю тоже будет вызов функции, как тогда отличить к примеру подподменю от подподподменю?