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

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

Thread Status:
Not open for further replies.
  1. Mixon

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

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    Подскажите,как можно остановить работаюший цыкл на javascript с страницы?
    Вот например, на странице работает цыкл,а у меня на странице кнопка "стоп",и нужно чтобы по ее нажатию цыкл скрипта останавливался,как ето сделать? желательно не теорию а на примере(=
     
  2. Neoveneficus

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

    Joined:
    10 Apr 2008
    Messages:
    235
    Likes Received:
    126
    Reputations:
    23
    Задача:

    есть ссылка
    Code:
    <a href="javascript:myfunc(1)">Линк 1</a>
    Когда кликаем по ней, ниже (под "Линк 1") появляется "Линк 2"
    по "Линк 2" - появляется "Линк 3". По "Линк 3" - "Линк 4"...

    Как реализуется myfunc(num)?
     
  3. Forcer

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

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    Для этого существуют javascript-debugger'ы. В каждом браузере существуют свои расширения для этого. Для FF - plugin firebug, Opera - Dragonfly(Tools - Advanced - Developer Tools), IE - debug bar. Так же под IE можно дебажить через MS VS, приаттачившись к процессу.

    Не совсем тоже самое, но, возможно, поможет:

    PHP:
    <script type="text/javascript">

    var 
    currNum 1;
    function 
    insertAfterreferenceNodenewNode ) {
        
    referenceNode.parentNode.insertBefore(newNodereferenceNode.nextSibling);
    }

    function 
    addNewAobj ) {
        var 
    newP document.createElement('p');
        var 
    newA document.createElement('a');
        
    newP.appendChild(newA);
        
    newA.href="javascript:void(0)";
        
    newA.onclick = function(){ addNewAthis ) };
        
    newA.innerHTML 'New A #'+(currNum++);
        
    insertAfterobjnewP );
    }

    </script>

    <p><a href="javascript:void(0)" onclick="javascript:addNewA( this );">First A</a></p>
    Взято с:
    http://www.netlobo.com/javascript-insertafter.html
     
    #1343 Forcer, 3 Apr 2009
    Last edited: 3 Apr 2009
  4. Mixon

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

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    Вопшем вот написал такой код...
    Code:
    <?php
    $command=$_POST['com'];
    if($command==''){
    ?>
    <script>
    
    var zapros;
    var url;
    
    function prepareRequest() {
    
        var zapros = false;
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            zapros = new XMLHttpRequest();
            if (zapros.overrideMimeType) {
            }
        } else if (window.ActiveXObject) { // IE
            try {
                zapros = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    zapros = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }
        if (!zapros) {
          alert('Ошибка при создании XMLHTTP'); return false;
        }
        return zapros;
    }
    
    function processLeave() {
    
     url="ajax.php";
     zapros = prepareRequest();
     zapros.onreadystatechange = function() {processReqChange();}
     zapros.open('POST', url);
     zapros.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=windows-1251');
    	zapros.send('com=3');
    }
    
    
    function processReqChange() {
    
        if (zapros.readyState == 4) {
            if (zapros.status == 200) {
    //	document.getElementById('good').innerHTML=""+zapros.responseText;
    //  document.getElementById("good").innerHTML=document.getElementById("good").innerHTML+zapros.responseText;
    //	alert(zapros.responseText);
    	eval(zapros.responseText);
    	PickText = zapros.responseText;
    	innerHTML = PickText;
            } else {
                alert("Не удалось получить данные:\n" +
                    zapros.statusText);
            }
        }
    }
    
    function processMain() {
     document.getElementById("good").innerHTML=document.getElementById("good").innerHTML+zapros.responseText;
     processLeave();
    }
    </script>
    <div id="good"></div>
    <a href="javascript:processLeave();">processLeave</a>
    <a href="">stop</a>
    
    <?php
    }else{
    echo "processMain();";
    }
    ?>
    
    Суть такова,на ajax даеться запрос на страницу ету же,получает ответ в виде processMain(); и снова ета ф-цыя делает запрос,чтото вроде цыкла выходит,так вот,как етот круг можно остановить со страницы ссылкой stop? нужно чтобы при ее нажатии просто запрос не исполнился а место него выполнилось другое действие.
    Я уже кучу времени потратил,но так ничего и не вышло...Плиз,помогите(
     
  5. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    :) И смысл? В него кто-то что-то должен вбивать или что?
     
  6. Mixon

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

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    А на мой вопрос никто незнает ответ чтоли?(((
     
  7. Vid0k

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

    Joined:
    24 Dec 2007
    Messages:
    393
    Likes Received:
    125
    Reputations:
    13
    document.getElementById("id поля").style.display = 'none';
     
  8. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    научите :)

    Подскажите, как делать запрос в базу данных mysql на AJAX? С чего начать?

    PHP:
    <input type="submit" name="sale" value="куплен">

    $result mysql_query ("UPDATE `b` SET `sale`='1' WHERE `uin`='".$_REQUEST['s_num']."'");
    Как выполнять такие запросы без перезагрузки страницы? :)

    Спасибо!
     
  9. blaga

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

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    скорее всего с того чтобы определиться писать этот модуль самому или откуда нибудь копипастить.. я не особо шарю в аяксе, но чувствую что готовых решений вагон и тележка...
     
  10. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    http://www.w3schools.com/PHP/php_ajax_database.asp

    там же можно и попробовать, как это работает, выбирая из списка разные ФИО
     
    2 people like this.
  11. j0ker13

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

    Joined:
    28 Jul 2008
    Messages:
    199
    Likes Received:
    16
    Reputations:
    5
    как нить можно получить средствами пхп результат работы ява-скрипта?
    т.е. пхп-скрипт получает страничку с ява-скриптом и нада получить результат выполнения его)
     
  12. heretic1990

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

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    У меня с Ajax не очень, так что нужна ваша помощь!
    вот такая проблема:
    Есть скрипт отображения времени:

    time.js
    Code:
    function show2(){
    if (!document.all&&!document.getElementById)
    return
    thelement=document.getElementById? document.getElementById("tick2"): document.all.tick2
    day=new Date()
    var hours=day.getHours()
    var minutes=day.getMinutes()
    if (minutes<=9)
    minutes="0"+minutes
    var ctime=hours+":"+minutes
    thelement.innerHTML="<span class='time'>"+ctime+"</span>"
    setTimeout("show2()",1000)
    }
    window.onload=show2
    мне понадобилось добавить скрипт для перемещения объектов по странице, вот он:

    dragable-content.js
    Code:
     	
    	if(!window.rememberPositionedInCookie)var rememberPositionedInCookie = false;
    	if(!window.rememberPosition_cookieName)var rememberPosition_cookieName = 'demo';
    
    	
    	var dragObjArray = new Array();
    	var dragObjCloneArray = new Array();
    	var numericIdToBeDragged = false;
    	var dragDropTimer = -1;
    	
    	var mouse_x;
    	var mouse_y;
    	
    	var el_x;
    	var el_y;
    	
    	var currentZIndex = 10000;
    	var dragableElementMoved = new Array();
    	
    	var dragableContent_cookieString;
    	var dragableContent_cookieItems = new Array();
    	
    	
    
    	function Get_Cookie(name) { 
    	   var start = document.cookie.indexOf(name+"="); 
    	   var len = start+name.length+1; 
    	   if ((!start) && (name != document.cookie.substring(0,name.length))) return null; 
    	   if (start == -1) return null; 
    	   var end = document.cookie.indexOf(";",len); 
    	   if (end == -1) end = document.cookie.length; 
    	   return unescape(document.cookie.substring(len,end)); 
    	} 
    
    	function Set_Cookie(name,value,expires,path,domain,secure) { 
    		expires = expires * 60*60*24*1000;
    		var today = new Date();
    		var expires_date = new Date( today.getTime() + (expires) );
    	    var cookieString = name + "=" +escape(value) + 
    	       ( (expires) ? ";expires=" + expires_date.toGMTString() : "") + 
    	       ( (path) ? ";path=" + path : "") + 
    	       ( (domain) ? ";domain=" + domain : "") + 
    	       ( (secure) ? ";secure" : ""); 
    	    document.cookie = cookieString; 
    	} 
    
    	
    	function getTopPos(inputObj)
    	{		
    	  var returnValue = inputObj.offsetTop;
    	  while((inputObj = inputObj.offsetParent) != null){
    	  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetTop;
    	  }
    	  return returnValue;
    	}
    	
    	function getLeftPos(inputObj)
    	{
    	  var returnValue = inputObj.offsetLeft;
    	  while((inputObj = inputObj.offsetParent) != null){
    	  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft;
    	  }
    	  return returnValue;
    	}
    		
    	function initDragDropElement(e)
    	{
    		if(document.all)e = event;
    		
    		if(document.all)e = event;
    		if (e.target) source = e.target;
    			else if (e.srcElement) source = e.srcElement;
    			if (source.nodeType == 3) // defeat Safari bug
    				source = source.parentNode;	
    		if(source.tagName.toLowerCase()=='input' || source.tagName.toLowerCase()=='textarea')return false;	
    
    			
    		numericIdToBeDragged = this.className.replace(/[^0-9]/g,'');
    		dragDropTimer=0;
    		mouse_x = e.clientX;
    		mouse_y = e.clientY;
    		
    		currentZIndex = currentZIndex + 1;
    		
    		dragObjCloneArray[numericIdToBeDragged].style.zIndex = currentZIndex;
    		
    		if(!dragableElementMoved[numericIdToBeDragged]){
    			dragObjCloneArray[numericIdToBeDragged].style.top = getTopPos(dragObjArray[numericIdToBeDragged]) + 'px';
    			dragObjCloneArray[numericIdToBeDragged].style.left = getLeftPos(dragObjArray[numericIdToBeDragged]) + 'px';
    		}				
    		el_x = dragObjCloneArray[numericIdToBeDragged].style.left.replace('px','')/1;
    		el_y = dragObjCloneArray[numericIdToBeDragged].style.top.replace('px','')/1;
    
    		
    		timerDragDropElement();
    		return false;
    	}
    	
    	function timerDragDropElement()
    	{
    		if(dragDropTimer>=0 && dragDropTimer<10){
    			dragDropTimer = dragDropTimer + 1;
    			setTimeout('timerDragDropElement()',5);
    			return;			
    		}
    		if(dragDropTimer>=10){
    			if(dragObjCloneArray[numericIdToBeDragged].style.display=='none'){
    				dragObjArray[numericIdToBeDragged].style.visibility = 'hidden';
    				dragObjCloneArray[numericIdToBeDragged].style.display = 'block';
    				dragObjCloneArray[numericIdToBeDragged].style.visibility = 'visible';
    				dragObjCloneArray[numericIdToBeDragged].style.top = getTopPos(dragObjArray[numericIdToBeDragged]) + 'px';
    				dragObjCloneArray[numericIdToBeDragged].style.left = getLeftPos(dragObjArray[numericIdToBeDragged]) + 'px';
    				dragableElementMoved[numericIdToBeDragged] = true;	
    			}
    		}		
    	}
    	
    	function cancelEvent()
    	{
    		return false;
    	}
    	
    	function cancelSelectionEvent()
    	{
    		if(dragDropTimer>=0)return false;
    		return true;
    	}
    	
    	function moveDragableElement(e)
    	{
    		if(document.all)e = event;		
    		if(dragDropTimer<10)return;	
    		dragObjCloneArray[numericIdToBeDragged].style.left = (e.clientX - mouse_x + el_x) + 'px'; 
    		dragObjCloneArray[numericIdToBeDragged].style.top = (e.clientY - mouse_y + el_y) + 'px'; 
    	}
    	
    	function stop_dragDropElement()
    	{
    		dragDropTimer = -1;
    		
    		if(rememberPositionedInCookie && dragObjCloneArray[numericIdToBeDragged]){		
    			dragableContent_cookieItems['dragableElementClone' + numericIdToBeDragged] = [dragObjCloneArray[numericIdToBeDragged].style.left,dragObjCloneArray[numericIdToBeDragged].style.top,dragObjCloneArray[numericIdToBeDragged].style.zIndex]; 
    		}
    		if(rememberPositionedInCookie)createCookieString();
    		numericIdToBeDragged = false;
    	}
    	
    	function createCookieString()
    	{
    		var stringToSave = '';
    		for(var prop in dragableContent_cookieItems){
    			if(stringToSave)stringToSave = stringToSave + '###';
    			stringToSave = stringToSave + prop + ',' + dragableContent_cookieItems[prop][0] + ',' +  dragableContent_cookieItems[prop][1] + ',' +  dragableContent_cookieItems[prop][2];
    		}	
    		Set_Cookie(rememberPosition_cookieName,stringToSave,60000000);
    	}
    	
    	
    	function initdragableElements()
    	{
    		var dragableContent_cookieString = false;
    		if(rememberPositionedInCookie){
    			dragableContent_cookieString = Get_Cookie(rememberPosition_cookieName);
    		}
    		var tmpElements = new Array();
    		var allObjects = document.getElementsByTagName('*');
    		for(var no=0;no<allObjects.length;no++){
    			if(allObjects[no].className=='dragableElement'){
    				allObjects[no].style.cursor = 'move';
    				tmpElements[tmpElements.length] = allObjects[no];
    			}
    		}
    		
    		for(var no=0;no<tmpElements.length;no++){
    			var el = tmpElements[no].cloneNode(true);
    			tmpElements[no].className='dragableElement' + no;
    			el.onmousedown = initDragDropElement;
    			el.className='dragableElementClone' + no;			
    
    			el.style.position='absolute';
    			el.style.display='none';
    			el.style.visibility='hidden';
    			
    			el.style.top = getTopPos(tmpElements[no]) + 'px';
    			el.style.left = getLeftPos(tmpElements[no]) + 'px';
    			tmpElements[no].parentNode.insertBefore(el,tmpElements[no]);
    			tmpElements[no].onmousedown = initDragDropElement;
    			
    			dragObjArray[no] = tmpElements[no]; 
    			dragObjCloneArray[no] = el; 
    		}
    		
    		document.body.onmousemove = moveDragableElement;
    		document.body.onmouseup = stop_dragDropElement;
    		document.body.onselectstart = cancelSelectionEvent;
    		document.body.ondragstart = cancelEvent;
    		
    		// Position cookie elements
    		if(dragableContent_cookieString){
    		
    			var items = dragableContent_cookieString.split('###');
    			for(var no=0;no<items.length;no++){
    				var tokens = items[no].split(',');
    				dragableContent_cookieItems[tokens[0]] = [tokens[1] ,tokens[2],tokens[3]];				
    			}	
    			positionItemsFromCookie();	
    		}
    	}
    	
    	function positionItemsFromCookie()
    	{
    		for(var prop in dragableContent_cookieItems){
    			for(var no=0;no<dragObjCloneArray.length;no++){
    				if(dragObjCloneArray[no].className==prop){
    					dragableElementMoved[no] = true;
    					dragObjCloneArray[no].style.display='block';
    					dragObjArray[no].style.visibility = 'hidden';
    					dragObjCloneArray[no].style.visibility = 'visible';
    					dragObjCloneArray[no].style.left = dragableContent_cookieItems[prop][0];
    					dragObjCloneArray[no].style.top = dragableContent_cookieItems[prop][1];
    					dragObjCloneArray[no].style.zIndex = dragableContent_cookieItems[prop][2];
    					currentZIndex = Math.max(currentZIndex,dragableContent_cookieItems[prop][2]/1 + 1);
    					
    				}
    			}
    		}
    	}
    	
    	window.onload = initdragableElements; 
    и если убрать скрипт "время", то он будит работать, а если скрипт оставить , то элементы перетаскивать нельзя, вчём дело непойму, может вопрос нубский но прошу помощи
     
  13. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    window.onload=show2
    window.onload = initdragableElements;


    http://www.manhunter.ru/webmaster/4_zapusk_neskolkih_funkciy_po_sobitiyu_onload.html
     
    1 person likes this.
  14. heretic1990

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

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    блин, вроде сделал как написано, теперь вообще ничё не работает((
     
  15. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Лучше это не читать.
     
  16. heretic1990

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

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    а можно ли это на ActionScript сделать?
    часы я сделал на флеш, а если и этот скрипт ?
    или я задумал невозможное?
     
    1 person likes this.
  17. Zircool

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

    Joined:
    1 Mar 2006
    Messages:
    162
    Likes Received:
    37
    Reputations:
    5
    Здравствуйте вот такой вопрос.. К большинству модулей на DLE прикручен аякс, когда вы отправляете сообщение , то окно как бы замирает и появляется полосочка загрузки, без рефреша страницы, пявляется сообщение или новый пост, который вы только что отправили... Я написал модуль, для проверки проиндексированных страниц в яше и гугле, но информация выводится с помощью рефреша, как вывод информации оформить с помощью аякс... Вот пример моего модуля.. Заранее благодарен за помощь...
     
  18. Sharky

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

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    подскажите как раз в секунду брать содержимое страницы и выводить его
     
  19. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Думаю разберёшься )

    PHP:

    <script>

    function 
    startSend() {
        var 
    httpRequest '';
        if (
    window.XMLHttpRequest) {
            
    httpRequest = new XMLHttpRequest();
        } else {
            if (
    window.ActiveXObject) {
                try {
                    
    httpRequest = new ActiveXObject('Msxml2.XMLHTTP');
                } catch(
    e) {
                    
    httpRequest = new ActiveXObject('Microsoft.XMLHTTP');
                }
            }
        }
        var 
    div document.getElementById('result');
        
    httpRequest.open('GET''3.php'true);
        
    httpRequest.send(null);
        
    httpRequest.onreadystatechange = function result() {
            if (
    httpRequest.readyState == || httpRequest.readyState == 'complete') {
                
    div.innerHTML += httpRequest.responseText "<br/>";
            }
        };
        
    setTimeout("startSend()",1000);

    }
    </script>

    <div id="result"></div>
    <button type="button" onclick="startSend()">START</button>

     
    1 person likes this.
  20. SXtingeR13

    SXtingeR13 New Member

    Joined:
    26 Feb 2009
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Подскажите как при помоши java чтобы отображалось какое сегодня число день и время, если можно есчё и погоду.
     
Thread Status:
Not open for further replies.