Javascript Question: Url click insert data in the database

Hi ,

I have pasted the code below:
Currently, it will display
First Link        Dismiss
Page 1 of 4 Next

Second Link  Dismiss
Page 2 of 4 Next

I want that when Dismiss is clicked for first link, i will save Url, sTitle, sLabel for first link in the database.
If for second link, dismiss is clicked, that will be save in the database.
I can call asp.net webservice through jAVASCRIPT so that I can pass pass these parameters and that save in database.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><!--$include ss_layout_head_info-->
<script type="text/javascript" language="javascript">
var curlink = 0;
var oXMLDOM = new ActiveXObject("Microsoft.XMLDOM");
var myReq = (window.XMLHttpRequest)? new XMLHttpRequest(): new ActiveXObject("MSXML2.XMLHTTP");
var sDisplayDiv = "area";
 
function onXMLResponse()
    {
        var sResponse = "";
                if(myReq.readyState == 4)
                    {
                        if(myReq.getResponseHeader('Content-Type').indexOf('xml') != -1)
                            {
                                sResponse = parseXML(myReq.responseXML);	
                            } 
  document.getElementById(sDisplayDiv).innerHTML = sResponse; ////Main Response
                        initLinks();
                    }
        }//onXMLResponse
        
    function parseXML(sXML)
        {
	        var sReturn = "";
	        var oLinkNode = false;
 
	        if(oXMLDOM != null && sXML != "")
	            {
		            oXMLDOM.async=false;
		            oXMLDOM.loadXML(sXML);
	            }
	        oRootNode = oXMLDOM.documentElement.firstChild;
	         for(var i=0; i<ResultSet.length; i++)
   	                    {   
                             oLinkNode = ResultSet[i];
                             Url = oLinkNode.getAttribute("dUrl");			// get URL
                             sTitle = oLinkNode.getAttribute("title");	// GET URLTITLE
                             sLabel = oLinkNode.getAttribute("Label");
                             sReturn += "<a href=" + sUrlTitle + ">" + sUrl + "</a>";
                             
                     }//for
                        
	                return sReturn;
	            }
        }//parseXML
  
     
    function getLinks () {
	var mydiv = document.getElementById('area');
	var links = mydiv.getElementsByTagName('A');
	return (links);
}
 
function setLink (whichLink) {
 
	var links = getLinks();
	for (i=0;i<links.length;i++) {
		links[i].style.display = (i == whichLink) ? '' : 'none';
	}
	var ltext ='(' + " " + (whichLink+1) + ' of ' + links.length + ' Links)';
	if (whichLink != 0) {
		var prevtext = '<a href="#" onclick="setLink('+ (whichLink-1) + ')" style="color:#688FCF;font-size:1em;">Previous Alert</a> ';
		ltext = prevtext + ltext;
	}
	if (whichLink != (links.length-1)) {
		var nexttext = ' <a href="#" onclick="setLink(' + (whichLink+1) + ')" style="color:#688FCF;font-size:1em;">Read next alert >></a>';
		ltext = ltext + nexttext;
	}
 
	document.getElementById('linktext').innerHTML = ltext;
}
    
      window.onload=function()
        {
            makeRequest();
        }
 
    function makeRequest()
        {
	        var sUrl = "http://ngfff.com/"
   		        myReq.onreadystatechange = onXMLResponse;
		            myReq.open("POST", sUrl, true); // true indicates asynchronous request
		            myReq.setRequestHeader("Content-Type", "text/xml");
		            myReq.send(strSoapRequest);
            }
 
</script>
 
</head>
 
<body>
 
 
       <span id="area" style="padding:14px;margin-right:20px;"></span>
       <span id="dismiss"><a href="#" onclick="dismissLink();" style="margin-left:20px;">Dismiss>></a></span>
        <div id="linktext"></div>
 
 
</body>
</html>

Open in new window

Saroj13Asked:
Who is Participating?
 
ziffgoneConnect With a Mentor Commented:
Or maybe this is what you're after to utilize all info. Note I had to edit your parseXML(sXML) function so all values were included in the sReturn link passed to you div.

sUrl
sTitle
sLabel

Hope this is it. :)
 function parseXML(sXML)
        {
              var sReturn = "";
              var oLinkNode = false;
 
              if(oXMLDOM != null && sXML != "")
                  {
                        oXMLDOM.async=false;
                        oXMLDOM.loadXML(sXML);
                  }
              oRootNode = oXMLDOM.documentElement.firstChild;
               for(var i=0; i<ResultSet.length; i++)
                             {  
                             oLinkNode = ResultSet[i];
                             sUrl = oLinkNode.getAttribute("dUrl");                  // get URL
                             sTitle = oLinkNode.getAttribute("title");      // GET URLTITLE
                             sLabel = oLinkNode.getAttribute("Label");
                             sReturn += "<a href=" + sUrl + " title="+ sLabel + ">" + sTitle + "</a>";                          
                     }//for
      return sReturn;          }
        }//parseXML
 
 
// ################################333
 
 
function dismissLink(){
   var gUrl=document.getElementById('_sReturn_').getElementsByTagName('a')[0];
 
   var get_sUrl=gUrl.getAttribute("href");
   var get_sLabel=gUrl.getAttribute("title"); 
   var get_sTitle=gUrl.innerHTML;
   alert('sUrl: ' + get_sUrl + '\nsTitle: '+ get_sTitle + '\nsLabel: ' + get_sLabel);
 
   // maybe store in cookie:
 
   document.cookie='sUrl='+get_sUrl+';sTitle='+get_sTitle+';sLabel='+get_sLabel+';';
 
}

Open in new window

0
 
Saroj13Author Commented:
Hello,

Please provide me the solution of how to get the data of url when dismiss click on every page.

First Link   Dismiss
Page 1 of 4 Next

When Dismiss is clicked, I need the information of current url like urltitle, url and label.

Thanks
0
 
ziffgoneCommented:
What is sTitle and sLabel? And what do you mean by urltitle ?

If you mean save the url of the page, the title of the page, and I have no idea what you mean by label, here's what I come up with...sorta of:




function dismissLink(){
   var url=top.location.href.toString();
   var ttl=document.title;
   var label=????;
 
   // do stuff with info
 
 
   alert('URL: '+url);
   alert('Title: '+ttl);
 
}

Open in new window

0
Cloud Class® Course: SQL Server Core 2016

This course will introduce you to SQL Server Core 2016, as well as teach you about SSMS, data tools, installation, server configuration, using Management Studio, and writing and executing queries.

 
Saroj13Author Commented:
Hi,
I mean by this:
 function parseXML(sXML)
        {
              var sReturn = "";
              var oLinkNode = false;
 
              if(oXMLDOM != null && sXML != "")
                  {
                        oXMLDOM.async=false;
                        oXMLDOM.loadXML(sXML);
                  }
              oRootNode = oXMLDOM.documentElement.firstChild;
               for(var i=0; i<ResultSet.length; i++)
                             {  
                             oLinkNode = ResultSet[i];
                             sUrl = oLinkNode.getAttribute("dUrl");                  // get URL
                             sTitle = oLinkNode.getAttribute("title");      // GET URLTITLE
                             sLabel = oLinkNode.getAttribute("Label");
                             sReturn += "<a href=" + sUrlTitle + ">" + sUrl + "</a>";                          
                     }//for
      return sReturn;          }
        }//parseXML

Then I am assigning this sReturn in <div>

Problem:...I am displaying data in this way:  
 First Link              dismiss
Page 1 of 4 Next

How dismiss link will get the information like sLabel, sUrl, SUrlTitle??

Thanks
 
0
 
ziffgoneCommented:
Ok, first off if it doesn't already have an ID, give the <div> that holds the sReturn value an id, like this:

<div id="_sReturn_">

Or something like that. Then use the below function.

Hope this helps.

function dismissLink(){
   var gUrl=document.getElementById('_sReturn_').getElementsByTagName('a')[0];
 
   var saveUrl=gUrl.getAttribute("href");
 
   alert(saveUrl);
 
   // maybe store in cookie:
 
   document.cookie='savedUrl='+saveUrl+';';
 
}

Open in new window

0
 
Saroj13Author Commented:
There is a change in the code. I am calling initLinks() from ParseXml.

Dismiss link, I am doing two things... I am getting the data for same link and that same link I am dismissing.

Suppose, I am on
Second Link          Dismiss
Previous Page 2 of 4 links Next

What dismiss is doing is it will dismiss the second link and I want the value of dismissed link

Now it will have First Link Dismiss
Page 1 of 3 Next

Would you please make changes in the DismissLink function so that it will work the same. Dismissing the link is working fine, just I want is I want to retrive the value of the dismmied link.

Thanks


    function initLinks () 
        {
             setLink(0);
	        init();
        }//initLinks
 
    function getLinks () 
        {
	        var mydiv = document.getElementById(area');
	        var links = mydiv.getElementsByTagName('A');
	        return (links);
        }//getLinks
 
    function setLink (whichLink) 
        { 
            curlink = whichLink;
	        var links = getLinks();
	        for (i=0;i<links.length;i++) 
	            {
             
                    if(i == whichLink)
                        {
                            links[i].style.display = '';
                            document.getElementById('readmore').childNodes[0].href=links[i].href;
                        } else 
                        {
                            links[i].style.display = 'none';
                        } 
 
}	
              document.getElementById('dismiss').style.visibility="visible";
 
	        var ltext ='&nbsp;&nbsp;(' + " " + (whichLink+1) + ' of ' + links.length + ' page)';
	
	        if (whichLink != 0) 
	            {
		            var prevtext = '&nbsp;&nbsp;<a href="#" onclick="setLink('+ (whichLink-1) + ')" style="color:#688FCF;font-size:1em;">Previous </a> ';
		            ltext = prevtext + ltext;
	            }
	        if (whichLink != (links.length-1)) 
	            {
		            var nexttext = ' <a href="#" onclick="setLink(' + (whichLink+1) + ')" style="color:#688FCF;font-size:1em;">Read next >></a>';
		            ltext = ltext + nexttext;
	            }
	       
	        
	        document.getElementById('linktext').innerHTML = ltext; 
	        if(links.length == 0)
	            {
                    document.getElementById('linktext').style.display = "none";
                    document.getElementById('dismiss').style.display = "none";
                    document.getElementById('Msg').style.display = "none";
                }
	 return false;       
    }//setLink
    
 
    function dismissLink (whichLink) 
        {   
            var gUrl= document.getElementById(area').getElementsByTagName('a')[0];
 
            var get_sUrl=gUrl.getAttribute("href");
            var get_sLabel=gUrl.getAttribute("title"); 
            var get_sTitle=gUrl.innerHTML;
            
            alert(get_sUrl);
            
            var links = getLinks();
            var mydiv = document.getElementById('area');
            saveIt('links'+links[whichLink].href);
            mydiv.removeChild(links[whichLink]);
            setLink(0);
            
            
            
 
 
        }
       
    function createCookie(name,value,days) 
        {
	        if (days) 
	            {
		            var date = new Date();
		            date.setTime(date.getTime()+(days*24*60*60*1000));
		            var expires = "; expires="+date.toGMTString();
	            }
	        else var expires = "";
	            document.cookie = name+"="+value+expires+"; path=/";
        }
        
    function readCookie(name) 
        {
	        var nameEQ = name + "=";
	        var ca = document.cookie.split(';');
	        for(var i=0;i < ca.length;i++) 
	            {
		            var c = ca[i];
		            while (c.charAt(0)==' ') c = c.substring(1,c.length);
		            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	            }
	        return null;
        } 
        
    function saveIt(name) 
        {
            var x = 1;
	        createCookie(name,x,7);
        }
     
     function init() 
        {
            var links = getLinks();
	        for (var i=3;i>=0;i--) 
	            {
		            var x = readCookie('links' + links[i].href);
                    if(x)
                        {
                            dismissLink(i);
                        }
	            }
        }

Open in new window

0
 
Saroj13Author Commented:
Thanks alot. Issue is resolved.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.