// object contructor method demoObj = function(formId) { var form = document.getElementById(formId); form.action = "javascript:void(0);"; form.onsubmit = this.jsonp.bind(this); window['demoObjInGlobal'] = this; }; demoObj.prototype.jsonp = function() { /* send data to Google App Engine Python server */ var input1value = document.getElementById('input1').value; var input2value = document.getElementById('input2').value; var url = '/jsonp?callback=' + encodeURIComponent('demoObjInGlobal["callback"]') + '&input1=' + encodeURIComponent(input1value) + '&input2=' + encodeURIComponent(input2value); var ext = document.createElement('script'); ext.setAttribute('src', url); document.getElementsByTagName("head")[0].appendChild(ext); }; demoObj.prototype.callback = function(JSONdata) { /* In order to parse data, we have to know the structure of data from server in advance */ /* show data returned from server */ var infoElm = document.getElementById('info'); infoElm.innerHTML = 'input1: ' + JSONdata[0]['input1'] + '
'; infoElm.innerHTML += 'input2: ' + JSONdata[1]['input2'] + '
'; infoElm.innerHTML += JSONdata[2] + '
'; infoElm.innerHTML += JSONdata[3] + '
'; };