Page 1 of 2

javascript error from REST result after app builder upgrade

Posted: Tue Sep 23, 2014 1:35 pm
by luke315774

I did the update to the new app builder. It look awesome. Thank you for giving us the opportunity to choose when to do the upgrade.

Unfortunately, look like my app wont run after the upgrade. Here is my first problem :

When doing REST request, here is a bit of javascript that always result a error :

if (data.response.status == "0" && data.response.totalRows == "1") {

here is the error in the console : Uncaught TypeError: Cannot read property 'status' of undefined

if I log 'data', here is what it contain :

Image

Thank you for your help


javascript error from REST result after app builder upgrade

Posted: Tue Sep 23, 2014 8:10 pm
by Kateryna Grynko

Hi Luke,

Please add the following line in the very beginning of Success event handler:predata = JSON.parse(data);/pre


javascript error from REST result after app builder upgrade

Posted: Tue Sep 23, 2014 8:19 pm
by luke315774

Here is the error I get on execution of the line you specified :

Image


javascript error from REST result after app builder upgrade

Posted: Wed Sep 24, 2014 1:45 am
by Yurii Orishchuk

Hi Luke,

Please give us your app public link, and describe steps how we can reproduce it.

Regards.


javascript error from REST result after app builder upgrade

Posted: Wed Sep 24, 2014 11:54 am
by luke315774

Public link : http://appery.io/app/mobile-frame?src...

When the app start, just enter a username (demo) password (demo) and hit "login". You should get the error has stated in my previous post.

Here are the first few line of code that run on service success :

data = JSON.parse(data);
if (data.response.status == "0" && data.response.totalRows == "1") {
console.log('1');
// save environment
localStorage.setItem("_environment", $('select[dsid="environmentSelect"]').val());


javascript error from REST result after app builder upgrade

Posted: Thu Sep 25, 2014 1:03 am
by Yurii Orishchuk

Hi Luke,

You have "XML" response thus "data" object is XMLDocument.

So you should use appropriate methods to access data inside this document.

Here is a code example to get "status" text.

pre

//Store text in "status" node for futher use.
var status = data.querySelector('response status').textContent;

/pre

So correct code for you:

pre

var status = data.querySelector('response status').textContent;
var totalRows = data.querySelector('response status').textContent;

//data = JSON.parse(data);

if (status == "0" && totalRows == "1") {
console.log('1');
// save environment
localStorage.setItem("environment", $('select[dsid="environmentSelect"]').val());
localStorage.setItem("user", $('input[dsid="usernameTextInput"]').val());

Code: Select all

 BergerSettings['url_restserver'] = BergerSettings['url_restserver_' + $('select[dsid="environmentSelect"]').val()]; 
 BergerSettings['url_report'] = BergerSettings['url_report_' + $('select[dsid="environmentSelect"]').val()]; 
 BergerSettings['url_server'] = BergerSettings['url_server_' + $('select[dsid="environmentSelect"]').val()]; 

 Appery.navigateTo('SelectCie', {transition : 'none'}); 

} else if (status == "-1") {
// check for error
alert(data);
} else {
alert("Oups, something went wrong");
}

/pre

Regards.


javascript error from REST result after app builder upgrade

Posted: Thu Sep 25, 2014 11:29 am
by luke315774

Thank you, I will try it.

But, the code was working before the appery update. We will have to correct all our app.


javascript error from REST result after app builder upgrade

Posted: Sat Sep 27, 2014 1:20 pm
by luke315774

I still get error :

Uncaught TypeError: Cannot read property 'status' of undefined


javascript error from REST result after app builder upgrade

Posted: Mon Sep 29, 2014 10:35 pm
by Yurii Orishchuk

Hi Luke,

You have error because tag "totalRows" does not exist in your response.

Here is modified code with this peculiarity:

pre

//data = JSON.parse(data);
var status = data.querySelector('response status').textContent;

//Assign 0 if does not exists.
var totalRows = data.querySelector('response totalRows') ? data.querySelector('response totalRows').textContent : 0;

if (status == "0" && totalRows == "1") {
console.log('1');
// save environment
localStorage.setItem("environment", $('select[dsid="environmentSelect"]').val());
localStorage.setItem("user", $('input[dsid="usernameTextInput"]').val());

Code: Select all

 BergerSettings['url_restserver'] = BergerSettings['url_restserver_' + $('select[dsid="environmentSelect"]').val()]; 
 BergerSettings['url_report'] = BergerSettings['url_report_' + $('select[dsid="environmentSelect"]').val()]; 
 BergerSettings['url_server'] = BergerSettings['url_server_' + $('select[dsid="environmentSelect"]').val()]; 

 Appery.navigateTo('SelectCie', {transition : 'none'}); 

} else if (status == "-1") {
// check for error
alert(data.querySelector('response data').textContent);
} else {
alert("Oups, something went wrong");
}

/pre

Regards.


javascript error from REST result after app builder upgrade

Posted: Mon Sep 29, 2014 10:53 pm
by luke315774

Hi,

Thanks for the response. I now got it working for this event.

Before the latest upgrade, our app was executing correctly without any "data.querySelector()" (We were just doing : "data.response.status"). Does that mean the upgrade is not backward compatible for our app.

We would have to rewrite and retest all our event?