0

Currently I have several questions in json.file, how can i retrieve all those questions from json.file by RANDOM order when click on 'refresh' button?? so far i retrieved them by for-loop, so it shows all the questions in sequence order.

  <script>
            var jsonfile='data.json';
            var qData=new Array();

    $.getJSON(jsonfile, function(data){
    for (var i=0;i<data.activity.length;i++)
        {
            qData[i]=data.activity[i].question;
        }

    for(var i=0;i<qData.length;i++)
        {
            append(qData[i],i);
            $('#text'+(i+1)).textinput();
                $('#submit'+(i+1)).button();
            $('#cancel'+(i+1)).button();
        }

    function append(data,i)
        {
            $('#list').append('<li><a href=#mypanel'+(i+1)+'  data-icon="arrow-l" data-iconpos="notext" data-shadow="false" data-iconshadow="false" class="ui-icon-nodisc" id="list">'+ data + '</a></li>'); //list item
            $('#mypanel'+(i+1)).append("<div align='center' style='margin-top:30px;'><font style='font-family:Helvetica, Arial, sans-serif ;color:white;' size='5px' ><b>Question Hint : </b></font></div><br/><label for=text"+(i+1)+" id=paneltitle"+(i+1)+" style='margin-top:10px;text-align:center;color:white;'>"+data+"</label>");//panel item
        $('#paneltitle'+(i+1)).append('<input type="text" id=text'+(i+1)+' >');
            $('#mypanel'+(i+1)).append('<a href="#header" data-role="button" id=submit'+(i+1)+' data-inline="true" data-rel="close" data-icon="check" style="margin-left:75px;">Submit</a>');
            $('#mypanel'+(i+1)).append('<a href=#mypanel'+(i+1)+' data-role="button" id=cancel'+(i+1)+' data-inline="true" data-rel="close" data-icon="delete2" style="margin-left:75px;">Cancel</a>');

        }
            $('#list').listview('refresh');



        });
        </script>

        <div data-theme="a" data-role="footer" data-position="fixed">
            <div data-role="navbar">
            <ul>
                <li><a id="PageRefresh" data-icon="refresh">Refresh</a></li>
            </ul>
            </div>
        </div>
Js Crew
  • 47
  • 9
  • 2
    Possible duplicate of http://stackoverflow.com/questions/6274339/how-can-i-shuffle-an-array-in-javascript – Aiias Apr 08 '13 at 03:15

2 Answers2

0

You will need to randomize it yourself, get the total keys in the object and select one.

$.getJSON(jsonfile, function(data) {
    var max = data.activity.length;
    var min = 0;
    var random = Math.floor(Math.random() * (max - min + 1)) + min;

    console.log(data.activity[random]);
});
francisco.preller
  • 6,559
  • 4
  • 28
  • 39
0

Try

while (data.activity.length) {
    var index = Math.floor(Math.random() * data.activity.length);
    qData.push(data.activity[index]);
    data.activity.splice(index, 1)
}

Complete code

var jsonfile = 'data.json';
var qData = [];

$.getJSON(jsonfile, function(data) {

    while (data.activity.length) {
        var index = Math.floor(Math.random() * data.activity.length);
        qData.push(data.activity[index]);
        data.activity.splice(index, 1)
    }

    for (var i = 0; i < qData.length; i++) {
        append(qData[i], i);
        $('#text' + (i + 1)).textinput();
        $('#submit' + (i + 1)).button();
        $('#cancel' + (i + 1)).button();
    }

    function append(data, i) {
        $('#list')
                .append('<li><a href=#mypanel'
                        + (i + 1)
                        + '  data-icon="arrow-l" data-iconpos="notext" data-shadow="false" data-iconshadow="false" class="ui-icon-nodisc" id="list">'
                        + data + '</a></li>'); // list item
        $('#mypanel' + (i + 1))
                .append("<div align='center' style='margin-top:30px;'><font style='font-family:Helvetica, Arial, sans-serif ;color:white;' size='5px' ><b>Question Hint : </b></font></div><br/><label for=text"
                        + (i + 1)
                        + " id=paneltitle"
                        + (i + 1)
                        + " style='margin-top:10px;text-align:center;color:white;'>"
                        + data + "</label>");// panel item
        $('#paneltitle' + (i + 1)).append('<input type="text" id=text'
                + (i + 1) + ' >');
        $('#mypanel' + (i + 1))
                .append('<a href="#header" data-role="button" id=submit'
                        + (i + 1)
                        + ' data-inline="true" data-rel="close" data-icon="check" style="margin-left:75px;">Submit</a>');
        $('#mypanel' + (i + 1))
                .append('<a href=#mypanel'
                        + (i + 1)
                        + ' data-role="button" id=cancel'
                        + (i + 1)
                        + ' data-inline="true" data-rel="close" data-icon="delete2" style="margin-left:75px;">Cancel</a>');

    }
    $('#list').listview('refresh');

});

Demo: Fiddle

Arun P Johny
  • 384,651
  • 66
  • 527
  • 531