Page 1 of 2 12 LastLast
Results 1 to 10 of 12

Thread: Dynamic ajax content: send POST

  1. #1
    Join Date
    Feb 2006
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Dynamic ajax content: send POST

    IM using the dinamyc ajax content script and I have a problem: I load on the rightcolumn a page in php.. everything is ok! but in this new page i load, i have a form
    The action of this form call is like this:
    action="javascript:ajaxpage('contenido/asignar.php?var=1', 'rightcolumn');

    it loads the form correctly, but i can only access the GET vars(var=1) but not the other POST vars.

    I llok into the code and I change this line
    page_request.open('GET', url, true)
    into:
    page_request.open('POST', url, true)

    but still does not work

    Is there a way i can get this post vars? i mean without going to another page, only calling the javascript:ajaxpage ??

  2. #2
    Join Date
    Jun 2005
    Location
    英国
    Posts
    11,876
    Thanks
    1
    Thanked 180 Times in 172 Posts
    Blog Entries
    2

    Default

    You'll need to structure the query using Javascript if you want this to work.
    Replace
    Code:
    page_request.open('GET', url, true)
    page_request.send(null)
    with:
    Code:
    page_request.open('POST', url, true);
    page_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    var pineapple = document.getElementById("formID").elements; // formID needs to be the ID of your form
    
    for(var fl = 0;fl < pineapple.length; fl++) page_request.send(pineapple[i].name + "=" + pineapple[i].value);
    This requires that your form have an ID and that your elements all have names.
    Last edited by Twey; 03-01-2006 at 04:21 PM.
    Twey | I understand English | 日本語が分かります | mi jimpe fi le jbobau | mi esperanton komprenas | je comprends français | entiendo español | tôi ít hiểu tiếng Việt | ich verstehe ein bisschen Deutsch | beware XHTML | common coding mistakes | tutorials | various stuff | argh PHP!

  3. #3
    Join Date
    Feb 2006
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    thanks very much! it works now!

  4. #4
    Join Date
    Jun 2005
    Location
    英国
    Posts
    11,876
    Thanks
    1
    Thanked 180 Times in 172 Posts
    Blog Entries
    2

    Default

    Whoops, forgot the open() call. I guess you figured this out if you got it working. Edited it in in case anyone's reading this.
    Twey | I understand English | 日本語が分かります | mi jimpe fi le jbobau | mi esperanton komprenas | je comprends français | entiendo español | tôi ít hiểu tiếng Việt | ich verstehe ein bisschen Deutsch | beware XHTML | common coding mistakes | tutorials | various stuff | argh PHP!

  5. #5
    Join Date
    Jun 2006
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    Unfortunitaly, somehow it doesn't really work for me.
    I really need to get this work with both GET and POST variables, because my site basicly switches pages using this script. If anyone can't be able to use forms in my site, there'll be no point of that site's existence.
    I have attached codes that i've tried so far.
    Any help will be highly apprecieted! Thanks.


    Here're main AJAX codes:
    Code:
    <script type="text/javascript">
    
    /***********************************************
    * Dynamic Ajax Content- &#169; Dynamic Drive DHTML code library (www.dynamicdrive.com)
    * This notice MUST stay intact for legal use
    * Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
    ***********************************************/
    
    var loadedobjects=""
    var rootdomain="http://"+window.location.hostname
    function ajaxpage(url, containerid,method){
    var page_request = false
    if (window.XMLHttpRequest) // if Mozilla, Safari etc
    page_request = new XMLHttpRequest()
    else if (window.ActiveXObject){ // if IE
    try {
    page_request = new ActiveXObject("Msxml2.XMLHTTP")
    } 
    catch (e){
    try{
    page_request = new ActiveXObject("Microsoft.XMLHTTP")
    }
    catch (e){}
    }
    }
    else
    return false
    document.getElementById(containerid).innerHTML='<img src="images/loader.gif"> <span class="th">Loading...</span>'
    page_request.onreadystatechange=function(){
    loadpage(page_request, containerid)
    }
    if(method=='POST'){
    page_request.open('POST', url, true) 
    page_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    var pineapple = document.getElementById("formID").elements;
    for(var i = 0; i< pineapple.length; i++) page_request.send(pineapple[i].name + "=" + pineapple[i].value);
    }else{
    page_request.open('GET', url, true)
    page_request.send(null)
    }
    }
    function loadpage(page_request, containerid){
    if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
    document.getElementById(containerid).innerHTML=page_request.responseText
    }
    function loadobjs(){
    if (!document.getElementById)
    return
    for (i=0; i<arguments.length; i++){
    var file=arguments[i]
    var fileref=""
    if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
    if (file.indexOf(".js")!=-1){ //If object is a js file
    fileref=document.createElement('script')
    fileref.setAttribute("type","text/javascript");
    fileref.setAttribute("src", file);
    }
    else if (file.indexOf(".css")!=-1){ //If object is a css file
    fileref=document.createElement("link")
    fileref.setAttribute("rel", "stylesheet");
    fileref.setAttribute("type", "text/css");
    fileref.setAttribute("href", file);
    }
    }
    if (fileref!=""){
    document.getElementsByTagName("head").item(0).appendChild(fileref)
    loadedobjects+=file+" " //Remember this object as being already added to page
    }
    }
    }
    </script>
    If you've noticed, i added loading stuff in there. So when i run whole thing, it's just "Loading..." stuff appears all the time with error message at status bar.
    Anyway,Here's how i call function to use it:
    Code:
    <?php
    echo $_GET['var'];
    echo $_POST['mn'];
    echo $_POST['bb'];
    ?>
    <form id="formID" action="javascript:ajaxpage('whatsup/news.php?var=1','contentarea','POST');" method="post">
    <input type="text" name="mn" id="mn">
    <input type="submit" name="bb" id="bb">
    </form>
    Again, please help out! I did a lot of search and saw some posts in this forum but none of them were helpful. I only need this script to work with both GET and POST vars, otherwise i'll have to change my whole site and that's not possible.
    Thanks in advance.
    Last edited by ericmn; 06-23-2006 at 07:56 AM.

  6. #6
    Join Date
    Jun 2005
    Location
    英国
    Posts
    11,876
    Thanks
    1
    Thanked 180 Times in 172 Posts
    Blog Entries
    2

    Default

    You can't use both GET and POST in the same request, I'm afraid. It has to be either one or the other.
    Twey | I understand English | 日本語が分かります | mi jimpe fi le jbobau | mi esperanton komprenas | je comprends français | entiendo español | tôi ít hiểu tiếng Việt | ich verstehe ein bisschen Deutsch | beware XHTML | common coding mistakes | tutorials | various stuff | argh PHP!

  7. #7
    Join Date
    Jun 2006
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    Thanks for ur response.
    Well, i didn't mean i want to get GET and POST vars both in same time.
    it's enough for me if i could get them seperately as i wanted, like if i want POST vars, i'd call: ajaxpage('url','contentarea','POST');
    and if i want GET vars,i'd call like this: ajaxpage('url','contentarea','GET');

    I hope you know what i mean.
    Thanks.

  8. #8
    Join Date
    Jun 2005
    Location
    英国
    Posts
    11,876
    Thanks
    1
    Thanked 180 Times in 172 Posts
    Blog Entries
    2

    Default

    Code:
    var frm = document.forms['formName']; // formName needs to be the name of your form
    var pineapple = frm.elements;
    
    if(frm.method.toLowerCase() === "post") {
      page_request.open('POST', url, true);
      page_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    
      for(var fl = 0;fl < pineapple.length; fl++) page_request.send(pineapple[i].name + "=" + pineapple[i].value);
    } else {
      var query_string = "?";
      for(var ji = 0; ji < pineapple.length; ji++)
        query_string += escape(pineapple[ji].name) + "=" + escape(pineapple[ji].value) + (ji + 1 < pineapple.length ? "&" : "");
      page_request.open('GET', url + query_string, true);
      page_request.send(null);
    }
    Twey | I understand English | 日本語が分かります | mi jimpe fi le jbobau | mi esperanton komprenas | je comprends français | entiendo español | tôi ít hiểu tiếng Việt | ich verstehe ein bisschen Deutsch | beware XHTML | common coding mistakes | tutorials | various stuff | argh PHP!

  9. #9
    Join Date
    Jun 2006
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    ohh boy...
    I can't believe it doesn't work for me again...just same old "Loading..." stuff.
    don't say it does works for you...
    Here's what i have:
    Code:
    function ajaxpage(url, containerid){
    var page_request = false
    if (window.XMLHttpRequest) // if Mozilla, Safari etc
    page_request = new XMLHttpRequest()
    else if (window.ActiveXObject){ // if IE
    try {
    page_request = new ActiveXObject("Msxml2.XMLHTTP")
    } 
    catch (e){
    try{
    page_request = new ActiveXObject("Microsoft.XMLHTTP")
    }
    catch (e){}
    }
    }
    else
    return false
    document.getElementById(containerid).innerHTML='<img src="images/loader.gif"> <span class="th">Ачаалж байна...</span>'
    page_request.onreadystatechange=function(){
    loadpage(page_request, containerid)
    }
    var frm = document.forms['ma']; // formName needs to be the name of your form
    var pineapple = frm.elements;
    
    if(frm.method.toLowerCase() === "post") {
      page_request.open('POST', url, true);
      page_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    
      for(var fl = 0;fl < pineapple.length; fl++) page_request.send(pineapple[i].name + "=" + pineapple[i].value);
    } else {
      var query_string = "?";
      for(var ji = 0; ji < pineapple.length; ji++)
        query_string += escape(pineapple[ji].name) + "=" + escape(pineapple[ji].value) + (ji + 1 < pineapple.length ? "&" : "");
      page_request.open('GET', url + query_string, true);
      page_request.send(null);
    }
    }
    Here's how i call it:
    Code:
    <?php
    echo $_GET['var'];
    echo $_POST['mn'];
    echo $_POST['bb'];
    ?>
    <form id="ma" name="ma" action="javascript:ajaxpage('whatsup/news.php','contentarea');" method="POST">
    <input type="text" name="mn" id="mn">
    <input type="submit" name="bb" id="bb">
    </form>
    Ahhh, i spent last 2 days trying to figure out it. Please HELP!
    Thanks very much Twey.

  10. #10
    Join Date
    Jun 2005
    Location
    英国
    Posts
    11,876
    Thanks
    1
    Thanked 180 Times in 172 Posts
    Blog Entries
    2

    Default

    Do you have a demo page?
    Twey | I understand English | 日本語が分かります | mi jimpe fi le jbobau | mi esperanton komprenas | je comprends français | entiendo español | tôi ít hiểu tiếng Việt | ich verstehe ein bisschen Deutsch | beware XHTML | common coding mistakes | tutorials | various stuff | argh PHP!

Bookmarks

Posting Permissions

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