Передача события из одной функции в другую встроенную функцию с именем agianst XMLHttpRequest.onreadystatechange - PullRequest
0 голосов
/ 13 сентября 2018

Я не могу передать событие, переданное в func, встроенной функции, вызываемой для XMLHttpRequest.onreadystatechange. При передаче события из функции func во встроенную функцию оно сообщает неопределенное значение. PFB встроенные комментарии для того же.

event.currentTarget.addEventListener("click", func, false); 
function func(event){
   var data1; 
   var str=event.currentTarget.textContent; //here variable value for str is   coming successfully.
   var xmlhttp=new XMLHttpRequest();
   xmlhttp.onreadystatechange=function(event)
             {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                  {
                  alert("event is"+event.currentTarget.textContent); //here event.currentTarget.textContent is coming undefined . Is there a way to get the value here similar to variable str?

                   data1= xmlhttp.responseText;
                   }
              }
  xmlhttp.open("GET","Jr6?q="+str,true); //here simply calling the servlet to get the data which is stored in data1 above.
  xmlhttp.send();
                        }

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

попробуйте удалить аргумент "event" из внутренней функции и просто используйте переменную "str":

event.currentTarget.addEventListener("click", func, false); 
function func(event){
    var data1; 
    var str=event.currentTarget.textContent;
    var xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            alert("event is" + str); 
            data1= xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","Jr6?q="+str,true);
    xmlhttp.send();
}

Вы можете прочитать о замыканиях здесь: https://www.w3schools.com/js/js_function_closures.asp

0 голосов
/ 13 сентября 2018

Ваш второй аргумент скрывает ваш первый аргумент.

Посмотрите, как должны меняться эти имена:

function func(myFirstEvent){
   var str = myFirstEvent.currentTarget.textContent; 
   var xmlhttp = new XMLHttpRequest();
   xmlhttp.onreadystatechange = function(mySecondEvent) {
       if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
           alert("event is" + myFirstEvent.currentTarget.textContent); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...