// JavaScript Document //3$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ //module.exports= function serialize (mixedValue) { // discuss at: https://locutus.io/php/serialize/ // original by: Arpad Ray (mailto:arpad@php.net) // improved by: Dino // improved by: Le Torbi (https://www.letorbi.de/) // improved by: Kevin van Zonneveld (https://kvz.io/) // bugfixed by: Andrej Pavlovic // bugfixed by: Garagoth // bugfixed by: Russell Walker (https://www.nbill.co.uk/) // bugfixed by: Jamie Beck (https://www.terabit.ca/) // bugfixed by: Kevin van Zonneveld (https://kvz.io/) // bugfixed by: Ben (https://benblume.co.uk/) // bugfixed by: Codestar (https://codestarlive.com/) // bugfixed by: idjem (https://github.com/idjem) // input by: DtTvB (https://dt.in.th/2008-09-16.string-length-in-bytes.html) // input by: Martin (https://www.erlenwiese.de/) // note 1: We feel the main purpose of this function should be to ease // note 1: the transport of data between php & js // note 1: Aiming for PHP-compatibility, we have to translate objects to arrays // example 1: serialize(['Kevin', 'van', 'Zonneveld']) // returns 1: 'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}' // example 2: serialize({firstName: 'Kevin', midName: 'van'}) // returns 2: 'a:2:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";}' // example 3: serialize( {'ü': 'ü', '四': '四', '': ''}) // returns 3: 'a:3:{s:2:"ü";s:2:"ü";s:3:"四";s:3:"四";s:4:"";s:4:"";}' let val, key, okey; let ktype=''; let vals=''; let count=0; const _utf8Size=function (str) { return ~-encodeURI(str).split(/%..|./).length; } const _getType=function (inp) { let match; let key; let cons; let types; let type=typeof inp; if (type === 'object' && !inp) { return 'null'; } if (type === 'object') { if (!inp.constructor) { return 'object'; } cons=inp.constructor.toString(); match=cons.match(/(\w+)\(/); if (match) { cons=match[1].toLowerCase(); } types=new Array('boolean', 'number', 'string', 'array'); for (key in types) { if (cons === types[key]) { type=types[key]; break; } } } return type; } const type=_getType(mixedValue) switch (type) { case 'function': val=''; break; case 'boolean': val='b:' + (mixedValue ? '1' : '0'); break; case 'number': val=(Math.round(mixedValue) === mixedValue ? 'i' : 'd') + ':' + mixedValue; break; case 'string': val='s:' + _utf8Size(mixedValue) + ':"' + mixedValue + '"'; break; case 'array': case 'object': val='a'; /* if (type === 'object') { var objname=mixedValue.constructor.toString().match(/(\w+)\(\)/); if (objname === undefined) { return; } objname[1]=serialize(objname[1]); val='O' + objname[1].substring(1, objname[1].length - 1); } */ for (key in mixedValue) { if (mixedValue.hasOwnProperty(key)) { ktype=_getType(mixedValue[key]); if (ktype === 'function') { continue; } okey=(key.match(/^[0-9]+$/) ? parseInt(key, 10) : key); vals += serialize(okey) + serialize(mixedValue[key]); count++; } } val += ':' + count + ':{' + vals + '}'; break; case 'undefined': default: // Fall-through // if the JS object has a property which contains a null value, // the string cannot be unserialized by PHP val='N'; break; } if (type !== 'object' && type !== 'array') { val += ';'; } return val; }//!\jsc:end:function serialize (mixedValue) { //3$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ function jsc_getformDataObj(formthis){ formData=new FormData(formthis); formDataObj={};formData.forEach((value,key)=>(formDataObj[key]=value)); return(formDataObj); ///alert('line= '+'89'+'\n'+'formDataObj= '+formDataObj+'\n'+'formDataObj.success= '+formDataObj.success); //list=formDataObj._form_;datas=formDataObj; //return(new Array(formDataObj._form_,formDataObj));//ex: formDataObj._form_=>value="logger.0,username,password" // const formData=new FormData(form); // const values=[...formData.entries()]; // const values=[...formData.entries()]; }//!\jsc:end:function jsc_getformDataObj(formthis) { //3$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ function jsc_XgetjsonParseResponse(xdr,datas) { //alert('line= '+'140'+'\n'+'xdr.responseText= '+xdr.responseText+'\n'+'datas= '+datas); code=xdr.responseText; convertedCode=decodeURI(code).replace(/\\"/gi,""); //c corrige la chaîne code envoyée par json_encode convertedCode=JSON.parse(convertedCode); //c transforme la chaîne convertedCode en modèle $_POST dans JS //alert('line= '+'145'+'\n'+'convertedCode.success= '+convertedCode.success); if(datas){convertedCode=Object.assign(datas,convertedCode);} //----- return(convertedCode);//JSON.parse(xdr.responseText);//JSON.parse(xdr.responseText); }//!\jsc:end:X:function jsc_XgetjsonParseResponse(xdr) { //3$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ function getXDomainRequest() { let xdr = null; if (window.XDomainRequest) {xdr = new XDomainRequest(); }  else if (window.XMLHttpRequest) { xdr = new XMLHttpRequest(); }  else { alert("Votre navigateur ne gère pas l'AJAX cross-domain !"); } return xdr;         }//!\jsc:end:ajax:getXDomainRequest() //3$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ function sendDataOpenResults(xdr,results) { // +'\n'+'jsonResponse.success= '+jsonParseResponse.success let sep=''; let d0=formatTimeMMSS(new Date(),sep); jsonParseResponse=jsc_XgetjsonParseResponse(xdr,results); /// alert('line= '+'223'+'\n'+'datas= '+datas+'\n'+'xdr.responseText= '+convertedCode+'\n'+'jsonParseResponse= '+jsonParseResponse.success); results=jsonParseResponse; d1=d0; while (d1-d0<3) {//inférieur à 3s d1=formatTimeMMSS(new Date(),sep); if((d1-d0)){ // JSON.parse(array) JSON.stringify(value) jsonParseResponse.success=(d1-d0); /// results=jsonParseResponse; //break; // step=1; alert('line= forum.js.php'+'168'+'\n'+'(d1-d0)= '+(d1-d0)+'\n'+'jsonParseResponse.username= '+jsonParseResponse.username); return(jsonParseResponse); } } // step=1; } function sendDataOpen(datas,linkAjaxAjax,synchro,xdr) { if(!xdr)xdr=getXDomainRequest(); var results=datas; //let sep=''; //let d0=formatTimeMMSS(new Date(),sep); //----- // xdr.onload = function(datas,results,step) {// avec xdr.onload = function() {// avec return(sendDataOpenResults(this,results)); /* // +'\n'+'jsonResponse.success= '+jsonParseResponse.success jsonParseResponse=jsc_XgetjsonParseResponse(this,results); /// alert('line= '+'223'+'\n'+'datas= '+datas+'\n'+'xdr.responseText= '+convertedCode+'\n'+'jsonParseResponse= '+jsonParseResponse.success); results=jsonParseResponse; d1=d0; while (d1-d0<3) {//inférieur à 3s d1=formatTimeMMSS(new Date(),sep); if((d1-d0)){ // JSON.parse(array) JSON.stringify(value) jsonParseResponse.success=(d1-d0); /// results=jsonParseResponse; //break; // step=1; alert('line= forum.js.php'+'173'+'\n'+'(d1-d0)= '+(d1-d0)+'\n'+'jsonParseResponse.username= '+jsonParseResponse.username); return(jsonParseResponse); } } // step=1; */ }//!\js.end:xdr.onload = function() { //----- xdr.open("POST",linkAjax,synchro);// synchro=false permet d'ATTENDRE que results vers return(results); xdr.send(datas); return(results); //return(new Array(xdr,results)); //return(results);          ///        xdr.open("GET", "http://www.foxycode.net/dev/ajax/XDomain_1.php"); //var line='?essai=ok'; datas ///        xdr.open("GET", "http://www.pooletude.com/iCloud/systemboost/scripts/sendmail.php"+line);      ///   xdr.open("GET", "http://www.pooletude.com/iCloud/systemboost/scripts/sendmail.php"+line);  //       xdr.open("GET", linkAjax+datas); ///alert(xdr); /*    xdr.onload = function(datas) { ///                alert('xdr.responseText'+'\n'+xdr.responseText); let jsonParseResponse=jsc_XgetjsonParseResponse(xdr,datas); returns=jsonParseResponse;         } */ }//!\jsc:end:ajax:function sendDataOpen(datas,linkAjax) { //3$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ function padTo2Digits(num) { return num.toString().padStart(2, '0'); }//!\jsc:end:format:number:function padTo2Digits(num) { //3$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ function formatDate(date) { return ( [ date.getFullYear(), padTo2Digits(date.getMonth() + 1), padTo2Digits(date.getDate()), ].join('-') + ' ' + [ padTo2Digits(date.getHours()), padTo2Digits(date.getMinutes()), padTo2Digits(date.getSeconds()), ].join(':') ); }//!\jsc:end:format:date:function formatDate(date) { //3$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ function formatTimeMMSS(date) { return ( [ padTo2Digits(date.getHours()), padTo2Digits(date.getMinutes()), padTo2Digits(date.getSeconds()), ].join('')//.join(':') ); }//!\jsc:end:format:date:function formatTimeMMSS(date) { //3$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ function sendReadyPOST(datas,linkAjax,synchro,xdr){//with success // https://byby.dev/js-format-date // https://bobbyhadz.com/blog/javascript-format-date-yyyy-mm-dd-hh-mm-ss if(!xdr)xdr = getXDomainRequest(); ///let synchro=false; let results; let sep=''; let d0=formatTimeMMSS(new Date(),sep); //let step; if(1)alert('line= '+'240'+'\n'+'datas= '+datas+'\n'+'datas._form_= '+datas._form_+'\n'+'d0= '+d0+'\n'+'xdr= '+xdr); //----- xdr.onload = function(datas,results,step) {// avec let jsonParseResponse=jsc_XgetjsonParseResponse(xdr,datas); alert('line= '+'223'+'\n'+'datas= '+datas+'\n'+'xdr.responseText= '+convertedCode+'\n'+'jsonParseResponse= '+jsonParseResponse.success); results=jsonParseResponse; let d1=d0; while (d1-d0<3) {//inférieur à 3s d1=formatTimeMMSS(new Date(),sep); if(1&&(d1-d0)){ // JSON.parse(array) JSON.stringify(value) jsonParseResponse.success=(d1-d0); alert('line= '+'247'+'\n'+'(d1-d0)= '+(d1-d0)+'\n'+'jsonResponse.success= '+ jsonParseResponse.success//+'\n'+'jsonStringifyResponse= '+jsonStringifyResponse ); results=jsonParseResponse; } } step=1; }//!\js.end:xdr.onload = function() { //----- //oData=datas;//formatoData(datas,linkAjax,synchro,xdr); xdr.open("POST",linkAjax,synchro);// false permet d'attendre que results vers return(results); xdr.send(datas); //----- if(step)return(results); //----- alert('line= '+'328'+'\n'+'datas= '+datas+'\n'+'Object.valuess(datas)= '+Object.values(datas)); xdr.open("POST",linkAjax,synchro);// synchro=false permet d'ATTENDRE que results vers return(results); xdr.send(datas);//oData); return(results);//!\obligatoire: // oData.append("datas", oData.serialize()); if(0){ datas={ success:0 ,firstName: 'Kevin' , midName: 'van' ,cni:'a:5:{i:0;s:17:"Michel Boussekeyt";i:1;s:23:"3 rue Victor Schoelcher";i:2;s:13:"59790 Ronchin";i:3;s:12:"+33781391043";i:4;s:16:"fatima@gmail.com";}' }; } alert('line= '+'346'+'\n'+'datas= '+datas+'\n'+'Object.valuess(datas)= '+Object.values(datas)); //oData=datas;   //      xdr.open("GET", linkAjax+datas); //if(xdr.responseText!=='on'){ //x=serialize(xdr.responseText); //alert('line= '+'244'+'\n'+'x= '+x); //var_dump(x); /* a:5:{i:0;s:17:"Michel Boussekeyt";i:1;s:23:"3 rue Victor Schoelcher";i:2;s:13:"59790 Ronchin";i:3;s:12:"+33781391043";i:4;s:16:"fatima@gmail.com";} */ //document.write("Serialized the above data ; " +'
'); // //y=unserialize(x); //document.write('
'+"Unserialize the above data and go back to original array : " +'
'); //var_dump(y); // C:\atelier\sommaire+content\0\js\indexTools-THESEA.js // convertedCode=decodeURI(code).replace(/\\"/gi,""); //c corrige la chaîne code envoyée par json_encode // convertedCode=JSON.parse(convertedCode); //c transforme la chaîne convertedCode en modèle $_POST dans JS }//!\jsc:end:ajax:function sendDataPOST(datas,linkAjax) { //3$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ function sendReadyPOST0(datas,linkAjax){//with success // https://byby.dev/js-format-date // https://bobbyhadz.com/blog/javascript-format-date-yyyy-mm-dd-hh-mm-ss    let xdr = getXDomainRequest(); let synchro=false,results; let d0=formatTimeMMSS(new Date()); let step; /* d0=[ padTo2Digits(d0.getHours()), padTo2Digits(d0.getMinutes()), padTo2Digits(d0.getSeconds()), ].join('');//.join(':'); */ alert('d0= '+'\n'+d0+'xdr= '+'\n'+xdr);         xdr.onload = function(datas,results,step) {// avec                 alert(xdr.responseText); //let jsonResponse=JSON.parse(xdr.responseText);//JSON.parse(xdr.responseText); let d1=d0; results={"success":0}; while (d1-d0<5) {//inférieur à 5s d1=formatTimeMMSS(new Date()); if(jsonResponse.success){ // results={"success":(datas.keywords==jsonResponse.keywords),"datas":jsonResponse}; results={"success":1,"datas":"toto"}; } } results={"success":1,"datas":"toto"}; step=1; } oData=formatoData(datas,linkAjax,synchro,xdr); xdr.open("POST",linkAjax,synchro);// false permet d'attendre que results vers return(results); // oData.append("datas", oData.serialize());   //      xdr.open("GET", linkAjax+datas);         xdr.send(oData); if(step)return(results); //let d1=formatTimeMMSS(date)new Date()); //                alert('jsonResponse'+'\n'+jsonResponse+'\n'+jsonResponse.keywords+'\n'+datas.keywords); //results={"success":(datas.keywords==jsonResponse.keywords),"datas":jsonResponse};       //  } /*         ///        xdr.open("GET", "http://www.foxycode.net/dev/ajax/XDomain_1.php"); //var line='?essai=ok'; datas ///        xdr.open("GET", "http://www.pooletude.com/iCloud/systemboost/scripts/sendmail.php"+line);      ///   xdr.open("GET", "http://www.pooletude.com/iCloud/systemboost/scripts/sendmail.php"+line); //datas={"oData":serialize(datas)}; datas='{'+serialize(datas)+'}'; datas={"oData":datas}; alert(datas); let oData=new FormData(); //oData.append("oData", datas);//.serialize()); //oData.append("datas0", datas);//.serialize()); // https://masteringjs.io/tutorials/fundamentals/foreach-key-value Object.keys(datas).forEach(key => { //console.log(key, obj[key]); oData.append(key, datas[key]); }); //oData.append("datas1", 1); //oData.append("datas2", 2); // oData.append("datas", oData.serialize()); xdr.open("POST",linkAjax,synchro);// synchro=false permet d'ATTENDRE que results vers return(results); // oData.append("datas", oData.serialize());   //      xdr.open("GET", linkAjax+datas);        xdr.send(oData);     //     xdr.send({"oData":serialize(oData)}); return(results); */ }//!\js.end:function sendDataPOST(datas,linkAjax) { function sendDataPOST(datas,linkAjax) {         var xdr = getXDomainRequest(); let synchro=false,results; //let results; alert(xdr);         xdr.onload = function(datas,results,step) {                 alert(xdr.responseText); let jsonResponse=JSON.parse(xdr.responseText);//JSON.parse(xdr.responseText);                 alert('jsonResponse'+'\n'+jsonResponse+'\n'+jsonResponse.keywords+'\n'+datas.keywords); results={"success":(datas.keywords==jsonResponse.keywords),"datas":jsonResponse};         } oData=formatoData(datas,linkAjax,synchro,xdr); xdr.open("POST",linkAjax,synchro);// false permet d'attendre que results vers return(results); // oData.append("datas", oData.serialize());   //      xdr.open("GET", linkAjax+datas);         xdr.send(oData);    //     xdr.send({"oData":serialize(oData)}); return(results);          ///        xdr.open("GET", "http://www.foxycode.net/dev/ajax/XDomain_1.php"); //var line='?essai=ok'; datas ///        xdr.open("GET", "http://www.pooletude.com/iCloud/systemboost/scripts/sendmail.php"+line);      ///   xdr.open("GET", "http://www.pooletude.com/iCloud/systemboost/scripts/sendmail.php"+line); alert(datas); datas='{'+serialize(datas)+'}'; datas={"oData":datas}; alert(datas); let oData=new FormData(); //oData.append("oData", datas);//.serialize()); Object.keys(datas).forEach(key => { //console.log(key, obj[key]); oData.append(key, datas[key]); }); //oData.append("datas1", 1); //oData.append("datas2", 2); // oData.append("datas", oData.serialize()); xdr.open("POST",linkAjax,false);// false permet d'attendre que results vers return(results); // oData.append("datas", oData.serialize());   //      xdr.open("GET", linkAjax+datas);         xdr.send(oData);    //     xdr.send({"oData":serialize(oData)}); return(results); }//!\js.end:function sendDataPOST(datas,linkAjax) {