Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 4 of 4
  1. #1
    New to the CF scene
    Join Date
    May 2009
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    onreadystatechange carrying variables

    right so here's my script:

    Code:
       var http_request = false;
       function makePOSTRequest(url, parameters, ag) {
          http_request = false;
          if (window.XMLHttpRequest) { // Mozilla, Safari,...
             http_request = new XMLHttpRequest();
             if (http_request.overrideMimeType) {
             	// set type accordingly to anticipated content type
                //http_request.overrideMimeType('text/xml');
                http_request.overrideMimeType('text/html');
             }
          } else if (window.ActiveXObject) { // IE
             try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
             } catch (e) {
                try {
                   http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
             }
          }
          if (!http_request) {
             alert('Cannot create XMLHTTP instance');
             return false;
          }
          
          http_request.onreadystatechange = alertContents(ag);
          http_request.open('POST', url, true);
          http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
          http_request.setRequestHeader("Content-length", parameters.length);
          http_request.setRequestHeader("Connection", "close");
          http_request.send(parameters);
       }
    
       function alertContents(ag) {
          if (http_request.readyState == 4) {
             if (http_request.status == 200) {
                //alert(http_request.responseText);
                result = http_request.responseText;
    var agg="myspanss"+ag;
                document.getElementById(agg).innerHTML = result;            
             } else {
                alert('There was a problem with the request.');
             }
          }
       }
       
       function get(obj,ag) {
    var poststr = "answer=" + escape(encodeURI(
    document.getElementById(ag).value )) + "&id=" + escape(encodeURI(
    document.getElementById(ag).value ));
    
          makePOSTRequest('answer.php', poststr, ag);
       }
    So i have a page (answer_stream.php), which has various textareas, each

    is

    <form id="boxID"> (ID replaced with their ID)
    and same with a textarea called <textarea id="textareaID">

    then I have a response box called <span id="responseID">

    So what I'd like, is if i submit the form for each ID, that a response appears in the correct box.

    So a solution I thought was on the post thing i have...

    Code:
    <input type=\"button\" onclick=\"javascript:get(this.parentNode,'$question[id]');\">
    And i'd like to carry this ID variable through the javascript functions, so that I can put the reponse in the right box

    Code:
       function alertContents(ag) {
          if (http_request.readyState == 4) {
             if (http_request.status == 200) {
                //alert(http_request.responseText);
                result = http_request.responseText;
    var agg="myspanss"+ag;
                document.getElementById(agg).innerHTML = result;            
             } else {
                alert('There was a problem with the request.');
             }
          }
       }
    See (ag) is supposed to be the id, carried through the functions, but for some reason it doesn't work.

    Cheers for your help!

  • #2
    Senior Coder rnd me's Avatar
    Join Date
    Jun 2007
    Location
    Urbana
    Posts
    4,461
    Thanks
    11
    Thanked 600 Times in 580 Posts
    remove the formal argument from function alertContents(ag), making it function alertContents(), and then place the function inside of the other function:makePOSTRequest.

    you won't need to pass anything to alertContents that way, and once inside, alertContents will be able to see the ag argument of makePOSTRequest.
    my site (updated 2014/10/20)
    BROWSER STATS [% share] (2014/9/03) IE7:0.1, IE8:4.3, IE11:9.2, IE9:2.7, IE10:2.6, FF:16.8, CH:47.5, SF:7.8, NON-MOUSE:37%

  • #3
    New to the CF scene
    Join Date
    May 2009
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Smile

    cheers! that nearly works, but just 1 or 2 things still don't.

    Here's the code now:
    Code:
       var http_request = false;
       function makePOSTRequest(url, parameters, ag) {
    
          function alertContents() {
             if (http_request.readyState == 4) {
                if (http_request.status == 200) {
                   //alert(http_request.responseText);
                   result = http_request.responseText;
                   var agg = "response" + ag;
                   document.getElementById(agg).innerHTML = result;        
                } else {
                   alert('There was a problem with the request.');
                }
             }
          }
    
          http_request = false;
          if (window.XMLHttpRequest) { // Mozilla, Safari,...
             http_request = new XMLHttpRequest();
             if (http_request.overrideMimeType) {
             	// set type accordingly to anticipated content type
                //http_request.overrideMimeType('text/xml');
                http_request.overrideMimeType('text/html');
             }
          } else if (window.ActiveXObject) { // IE
             try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
             } catch (e) {
                try {
                   http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
             }
          }
          if (!http_request) {
             alert('Cannot create XMLHTTP instance');
             return false;
          }
          
          http_request.onreadystatechange = alertContents(ag);
          http_request.open('POST', url, true);
          http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
          http_request.setRequestHeader("Content-length", parameters.length);
          http_request.setRequestHeader("Connection", "close");
          http_request.send(parameters);
       }
    
    
       
       function get(obj,ag) {
          var answer = "answer" + ag;
          var poststr = "answer=" + escape(encodeURI(
          document.getElementById(answer).value )) + "&id=" + ag;
          makePOSTRequest('answer.php', poststr, ag);
       }
    Right. so the ID comes through fine, but the answer just comes out as 'undefined'. Each answer is in a <textarea id="answerID">

    So there must be something wrong with this:
    Code:
       function get(obj,ag) {
          var answer = "answer" + ag;
          var poststr = "answer=" + escape(encodeURI(
          document.getElementById(answer).value )) + "&id=" + ag;
          makePOSTRequest('answer.php', poststr, ag);
       }
    Also, the response doesn't seem to come through even though there is a div box called <div id="responseID">

    Though it does work as it does insert into the database (on answer.php), just those two things don't.

    I appreciate the help, cheers

  • #4
    Senior Coder rnd me's Avatar
    Join Date
    Jun 2007
    Location
    Urbana
    Posts
    4,461
    Thanks
    11
    Thanked 600 Times in 580 Posts
    glad to get you closer with just a few sentences.

    can you post the whole code, or at least the call that starts this whole thing in motion?

    I am having a little trouble tracing it without seeing the HTML or function calls.

    if you are doing more than one request, you should move the XmlHttpRequest variable inside of the dispatch function:
    Code:
    function makePOSTRequest(url, parameters, ag) {
         var http_request = false;
    right now, a second request would stomp out the first...
    but again, without seeing the whole picture i can't say with any certainty what the problem is.
    my site (updated 2014/10/20)
    BROWSER STATS [% share] (2014/9/03) IE7:0.1, IE8:4.3, IE11:9.2, IE9:2.7, IE10:2.6, FF:16.8, CH:47.5, SF:7.8, NON-MOUSE:37%


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •