Jquery Type ahead Google Analytics Custom field

Below, I have the following code that is for a type ahead search for FAQ content. It is working properly.  However, when I try to add Google Analytic code where the search term parameter is located it breaks.

if (!window.console) console = {log: function() {}};

$("#jsoninfo").val = '';
    
$(document).ready(function () {
        $().SPServices({
            operation: "GetListItems",
            async: false,
            webURL: "http://itsusmpw00799:56789/prd/hcctesting/faq/",
            listName: "FAQ",
            CAMLViewFields: "<ViewFields><FieldRef Name='ID' /><FieldRef Name='label' /><FieldRef Name='Title' /><FieldRef Name='Name1' /><FieldRef Name='full' /></ViewFields>",
            CAMLQuery: '',
            completefunc: function (xData, Status) {

var jsondata                
jsondata = $(xData.responseXML).SPFilterNode("z:row").SPXmlToJson({ 
  mapping: {
     ows_Title: {mappedName: "tags", objectType: "Text"},
     ows_label: {mappedName: "question", objectType: "Text"},
     ows_Name1: {mappedName: "body", objectType: "Text"}},
  includeAllAttrs: false,
  removeOws: true
}); 
                        
//console.log(jsondata);

var jsonstring = JSON.stringify(jsondata); 

                
$('#jsoninfo').val(jsonstring);

var adamjson = $('#jsoninfo').val();
var jsonparse = $.parseJSON(adamjson); 
//console.log(jsonparse);                                          
     }   
            
    });
    });
    
$(function(){
$("#s1").autocomplete({ 
    minLength: 3,
    cache: false,
    datatype: "json",
    source: function (request, response){
        var jsonparse = $.parseJSON($("#jsoninfo").val());
        //console.log(jsonparse);
        var searchParam =request.term.toLowerCase();
        var results = [];
        for (var i = jsonparse.length - 1; i >= 0; i--) {
        var $tags_array = [];    
        var $tags_array = jsonparse[i].tags.split(';');
            
if($.inArray(searchParam,$tags_array)>-1||jsonparse[i].question.toLowerCase().indexOf(searchParam) > -1) {

results.push(jsonparse[i].question);
response(results);
}
                  
    } 
console.log(results);
$("#jsoninfo2").val(JSON.stringify(results));    
    },
      select: function(event, ui) {
        var jsonparse = [];
        var jsonparse = $.parseJSON($('#jsoninfo').val());
        var answer = [];
        for (var i = jsonparse.length - 1; i >= 0; i--) {
        if(jsonparse[i].question.indexOf(ui.item.label) > -1) {
        
        $("#jsoninfo2").val('<div class="question">' + jsonparse[i].question + '</div><br><div class="answer">' +  jsonparse[i].body+'</div>');
            
       
    
     
    }
}
console.log(answer);
        $("#popuppanel").fadeIn('slow');
        $('#faq_label').html('<div class="close" onclick="faqclose()">Ă—</div><br>' + $("#jsoninfo2").val());
        $('#faq_label a').live('click', function() {
        window.open($(this).attr('href'));
        return false;
});
		$("#popuppanel").focus(); 
        $(this).val(''); return false;     
    }
    
}
                     )

$('#s1').attr("value", "");
}
);


function faqclose() {
       $("#popuppanel").fadeOut('slow'); 
       
	  }



   

Open in new window



Where should I embed the GA code?

_gaq.push(['_setCustomVar',
      1,                   // This custom var is set to slot #1.  Required parameter.
      'Search_Term',     // The name acts as a kind of category for the user activity.  Required parameter.
      $("#s1").val,               // This value of the custom variable.  Required parameter.
      2                    // Sets the scope to session-level.  Optional parameter.
   ]);
 _gaq.push(['_trackEvent',
      'Search', // category of activity
      'Item Add', // Action
   ]);      

Open in new window



Is there an easier way to do this?
Adam EhrenworthLead Technology AnalystAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

leakim971PluritechnicianCommented:
line 4 should be : $("#s1").val(),
instead : $("#s1").val,
Adam EhrenworthLead Technology AnalystAuthor Commented:
Thanks for the correction. I am also having trouble knowing where the Google code should be placed in the jquery to send the search term every time it gets entered by the user. Where ever I add it in the type ahead stops working or only shows 1 result.

Please advise.
leakim971PluritechnicianCommented:
inside the complete callback function :
completefunc: function (xData, Status) {
 // here

or :
select: function(event, ui) {
// here once the user select one
Thriving as a woman in IT

The IT workforce is diversifying, but the gender gap in tech remains very real. Overcoming stereotypes, and the glass ceiling is important not only for individual women working in the field but for the industry as a whole. Here are eight things women in IT do to succeed.

Adam EhrenworthLead Technology AnalystAuthor Commented:
I tried do it this way... but it doesn't seem to be working still.. sorry but I am just not clear if I need to put the code somewhere separate and just reference it after the other function.

console.log(results);
$("#jsoninfo2").val(JSON.stringify(results));    
    },
      select: function(event, ui) {
        _gaq.push(['_setCustomVar',
      1,                   // This custom var is set to slot #1.  Required parameter.
      'Search_Term',     // The name acts as a kind of category for the user activity.  Required parameter.
      $("#s1").val(),               // This value of the custom variable.  Required parameter.
      2                    // Sets the scope to session-level.  Optional parameter.
   ]);
 _gaq.push(['_trackEvent',
      'Searh_Term', // category of activity
      'Item', // Action
   ])  
            
        var jsonparse = [];
        var jsonparse = $.parseJSON($('#jsoninfo').val());
        var answer = [];
        for (var i = jsonparse.length - 1; i >= 0; i--) {
        if(jsonparse[i].question.indexOf(ui.item.label) > -1) {
        
        $("#jsoninfo2").val('<div class="question">' + jsonparse[i].question + '</div><br><div class="answer">' +  jsonparse[i].body+'</div>');
                   
    
     
    }
}

Open in new window

leakim971PluritechnicianCommented:
place an alert in front of this code, do you get it?
if yes, test your push alone (click on a button) to be sure it work alone

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Adam EhrenworthLead Technology AnalystAuthor Commented:
Ok I will try that. If I have trouble I will let you know,
Adam EhrenworthLead Technology AnalystAuthor Commented:
There is activity that is showing up in the Realtime area in analytics but the Custom Variables are not appearing in the Audience/Custom section.

search.jpg - I want to have the search term(s) as one custom variable , in the input id "s1". and the search results are in json form in hidden text area with id "jsoninfo2"

Is there key designation that I need to use? Is the code not defined properly? This is the first time I am trying to pass this kind of autocomplete search content to GA.

Help!

thanks,

Adam
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
jQuery

From novice to tech pro — start learning today.