luke315774
Posts: 0
Joined: Mon Mar 17, 2014 6:33 pm

javascript error from REST result after app builder upgrade

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

Kateryna Grynko
Posts: 0
Joined: Thu Nov 15, 2012 9:13 am

javascript error from REST result after app builder upgrade

Hi Luke,

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

luke315774
Posts: 0
Joined: Mon Mar 17, 2014 6:33 pm

javascript error from REST result after app builder upgrade

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

Image

Yurii Orishchuk
Posts: 0
Joined: Fri Feb 14, 2014 8:20 am

javascript error from REST result after app builder upgrade

Hi Luke,

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

Regards.

luke315774
Posts: 0
Joined: Mon Mar 17, 2014 6:33 pm

javascript error from REST result after app builder upgrade

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());

Yurii Orishchuk
Posts: 0
Joined: Fri Feb 14, 2014 8:20 am

javascript error from REST result after app builder upgrade

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.

luke315774
Posts: 0
Joined: Mon Mar 17, 2014 6:33 pm

javascript error from REST result after app builder upgrade

Thank you, I will try it.

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

luke315774
Posts: 0
Joined: Mon Mar 17, 2014 6:33 pm

javascript error from REST result after app builder upgrade

I still get error :

Uncaught TypeError: Cannot read property 'status' of undefined

Yurii Orishchuk
Posts: 0
Joined: Fri Feb 14, 2014 8:20 am

javascript error from REST result after app builder upgrade

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.

luke315774
Posts: 0
Joined: Mon Mar 17, 2014 6:33 pm

javascript error from REST result after app builder upgrade

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?

Return to “Issues”