I have a problem with getting the length of an array, when it is not initialized in the format: var variable = new Array();
Here is my code:
var inx;
var qns;
var qis;
var ncs;
var nzs;
var tps;
function display_question()
{
$( "#question_no" ).text( qns[ inx ] );
$( "#question_nc" ).text( ncs[ inx ] );
$( "#question_nz" ).text( nzs[ inx ] );
$( "#the_question" ).hide();
$( "#the_question" ).text( tps[ inx ] );
$( "#the_question" ).fadeIn( 500 );
}
function next_question()
{
var arr_len = qns.length;
if( inx < arr_len )
{
inx++;
display_question();
}
}
function prev_question()
{
if( inx > 0 )
{
inx--;
display_question();
}
}
function get_questions()
{
var url = "php/pytania.php";
$.ajax(
{
cache: false,
async: false,
type: "GET",
dataType: "text",
url: url,
success: function( response )
{
data = jQuery.parseJSON( response );
inx = 0;
qns = data.qns;
qis = data.qis;
ncs = data.ncs;
nzs = data.nzs;
tps = data.tps;
display_question();
}
} );
}
The problem is that when I try to return the length of qns like so: qns.length, it doesn't return anything. I suspect that this may be because when i read in the array from the JSON response, it is not as an array object. Is there any way to fix this? I'd appreciate any help! :)
data.qns
? If it is not array, you have to loop over it and count the elements. But if you have continuous numeric keys, then it would be better to fix the JSON to create an array. So what doesdata.qns
contain and how are you creating the JSON?$qns
an array? If so, just useecho json_encode($json_array);
to let PHP create a JSON array. No need for objects here. Thenqns.length
will work as expected. Associative are converted to objects anyway. But if you useJSON_FORCE_OBJECT
, so will numerical arrays.