Show
Ignore:
Timestamp:
29.04.2013 20:25:28 (7 years ago)
Author:
ak19
Message:

Adding an Ajax Synchronous Post method to gsajaxapi.js which is then used by the setMetadataArray() that is called from document.dm. Also corrected a variable misspelling in baseaction (authenication changed to authentication) so that locating perl code that deals with authentication may become easier.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/web/script/gsajaxapi.js

    r27257 r27277  
    138138       return xmlHttp.responseText; 
    139139    } 
    140      
     140 
     141    // New, an Ajax Synchronous Post method. 
     142// http://www.degraeve.com/reference/simple-ajax-example.php 
     143// Async vs Sync: http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp  
     144// Also: 
     145// http://stackoverflow.com/questions/6312447/in-an-ajax-post-do-i-need-to-urlencode-parameters-before-sending 
     146// http://api.jquery.com/jQuery.post/ 
     147// http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp 
     148    this.urlPostSync = function(scriptURL, params) { 
     149    var xmlHttp=false; 
     150       try { 
     151         // Firefox, Opera 8.0+, Safari 
     152         xmlHttp=new XMLHttpRequest(); 
     153       } 
     154       catch (e) { 
     155         // Internet Explorer 
     156         try { 
     157           xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
     158         } 
     159         catch (e) { 
     160           try { 
     161             xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     162           } 
     163           catch (e) { 
     164             alert("Your browser does not support AJAX!"); 
     165             return false; 
     166           } 
     167         } 
     168       } 
     169 
     170    // e.g. scriptURL: /greenstone/cgi-bin/metadata-server.pl 
     171    xmlHttp.open('POST', scriptURL, false); // false means synchronous 
     172    xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
     173     
     174    // If asynchronous: 
     175//    xmlHttp.onreadystatechange = function() { 
     176//        if (xmlHttp.readyState == 4) { 
     177//            updatepage(xmlHttp.responseText); 
     178//        } 
     179//    } 
     180 
     181    xmlHttp.send(params); // needs to be escaped/encoded 
     182 
     183    //alert(xmlHttp.responseText); // if synchronous, process xmlHttp.responseText AFTER send() call 
     184    return xmlHttp.responseText; 
     185} 
     186 
    141187    this.setLiveMetadata = function(id,metaname,metavalue) 
    142188    { 
     
    155201    // The where parameter can be specified as one or more of: import, archives, index, live  
    156202    // separated by |. If null, it is assumed to be index which is the original default  
    157     // behaviour of calling set-metadata). E.g. where=import|archives|index 
     203    // behaviour of calling set-metadata. E.g. where=import|archives|index 
    158204    this.setMetadata = function(docid,metaname,metapos,metavalue,metamode,where) 
    159205    { 
     
    177223    } 
    178224     
    179         this.urlGetSync(mdserver + "?" + params); 
    180         //this.urlPostSync(mdserver,params); 
     225        //this.urlGetSync(mdserver + "?" + params); 
     226        this.urlPostSync(mdserver,params); 
    181227    } 
    182228 
     
    191237    var mdserver = this.metadataserverURL(); 
    192238     
    193     var params = "a=set-metadata-array"; 
     239    var params = "a=" + escape("set-metadata-array"); //"a=set-metadata-array"; 
    194240    if(where != null) { 
    195         params += "&where=" + where; // if where not specified, meta-server will default to setting index meta 
     241        params += "&where=" + escape(where); // if where not specified, meta-server will default to setting index meta 
    196242        //} else { 
    197243        //    params += "&where=import|archives|index"; 
    198244    } 
    199     params += "&c="+collect_; 
    200     params += "&json="+docArrayJSON; 
     245    params += "&c="+escape(collect_); 
     246    params += "&json="+escape(docArrayJSON); 
    201247     
    202248    if (metamode!=null) { 
    203         params += "&metamode=" + metamode; 
    204     } 
    205      
    206     this.urlGetSync(mdserver + "?" + params); 
    207      
     249        params += "&metamode=" + escape(metamode); 
     250    } 
     251     
     252    //this.urlGetSync(mdserver + "?" + params); 
     253    this.urlPostSync(mdserver,params);   
    208254    } 
    209255