Question

NO JQUERY. I am using peoplecode which is similar to JSP, ASP, and ZXZ. The ajax request is triggered am I am trying to pull the text 'Hello World' from this script...

Function IScript_AJAX_Test()  
   %Response.Write("<div id='hello'>Hello World</div>");  
End-Function;

My javascript function that makes the ajax call looks like this...

function AJAX_test (ajax_link) {

  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 or XMLHTTP.');
            };
        }
  var request = new XMLHttpRequest();
  request.onreadystatechange = function() {
    if (request.readyState == 4 && request.status == 200) {

      document.getElementById('ajax').innerHTML = request.responseText.document.getElementById('hello').innerHTML;
      //document.getElementById('ajax').innerHTML = 'Testing';
    }  
  }
  request.open('GET', ajax_link, true);
  request.send(); 

  //document.getElementById('ajax').innerHTML = ajax_link;
}

As you can see in this line..

document.getElementById('ajax').innerHTML = request.responseText.document.getElementById('hello').innerHTML;

...I am trying to grab the text by getting the innerHTML from the id. This isn't working though. When I click the button nothing happens.

I tried using the line below, but it returns an entire new page where the id would be (probably because of Peoplesoft)...

document.getElementById('ajax').innerHTML = request.responseText;

Can someone help me achieve this...

Was it helpful?

Solution

I tried your code and it works for me, with

Function IScript_AJAX_Test()  
   %Response.Write("<div id='hello'>Hello World");  
End-Function;

and in the javascript

document.getElementById('ajax').innerHTML = request.responseText;

Make sure you call the content servlet (psc), not the portal servlet (psp), e.g. 'http://peoplesofturl/psc/ps/EMPLOYEE/HRMS/s/WEBLIB_Z_SYS.FUNCLIB.FieldFormula.IScript_AJAX_Test', otherwise you'll get the response wrapped in the peoplesoft portal.

You can generate the url from peoplecode with the GenerateScriptContentRelURL or GenerateScriptContentURL functions.

OTHER TIPS

Make it simple:

Function IScript_AJAX_Test()  
   %Response.Write("Hello World");  
End-Function;

Javascript:

document.getElementById('ajax').innerHTML = request.responseText;

Ajax might be two types. One is server-side and the other one is client-side. You are trying to get data from client side. In this case ajax fetch nothing but the whole page result of a page not a portion. You will have the whole page result(HTML output) if you write

document.getElementById('ajax').innerHTML = request.responseText;

But you cannot fetch just only the innerHtml part of certain portion of another page. On that case you will get the whole page.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top