Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON响应未根据SQL查询正确排序_Javascript_Php_Mysql_Json - Fatal编程技术网

Javascript JSON响应未根据SQL查询正确排序

Javascript JSON响应未根据SQL查询正确排序,javascript,php,mysql,json,Javascript,Php,Mysql,Json,我的JSON数组有问题。在第一次加载时,顺序与应该的顺序不同(如SQL查询中定义的) 因此,主要的问题是,在页面加载时,即当使用lastPoll=null调用SQL查询时,结果不是按time1 DESC排序的,而是按s.id ASC排序的。当我输入一个新结果,然后使用查询中的lastPoll集运行查询时,最新的结果会被添加到顶部,这是应该的 奇怪的是——如果我在push.php查看原始JSON响应,并在URL中使用正确的参数,那么响应是正确的,并且顺序正确。那么,问题一定在于解析 以下是SQL查

我的JSON数组有问题。在第一次加载时,顺序与应该的顺序不同(如SQL查询中定义的)

因此,主要的问题是,在页面加载时,即当使用lastPoll=null调用SQL查询时,结果不是按time1 DESC排序的,而是按s.id ASC排序的。当我输入一个新结果,然后使用查询中的lastPoll集运行查询时,最新的结果会被添加到顶部,这是应该的

奇怪的是——如果我在push.php查看原始JSON响应,并在URL中使用正确的参数,那么响应是正确的,并且顺序正确。那么,问题一定在于解析

以下是SQL查询:

$getActivityUpdates1 = mysql_query("
    SELECT
        s.id, u.name, u.profilePic, s.userid,  s.content, s.time1, s.imageKey
    FROM
        status_updates s 
    INNER JOIN
        users1 u ON u.id = s.userid 
    WHERE
        competitionId = '$competitionId' AND s.time1 > '$lastPoll'
    ORDER BY s.time1 DESC");

$results = array('items' => array());

while ($row = mysql_fetch_array($getActivityUpdates1)) 
{
    $results['items'][] = array(
    'statusid' => $row['id'],
    'name' => $row['name'], 
    'profilePic' => $row['profilePic'],
    'content' => $row['content'],
    'time1' => $row['time1'],
    'imageKey' => $row['imageKey'],
    );
}

die(json_encode($results));
?>
下面是我重新运行查询的Javascript

var lastPoll = null;     
function loadActivity(onDone) {

    var competitionId = $("body").attr("data-competitionId");
    console.log(lastPoll);

    if (lastPoll == null) { // We have never polled, we want to pull everything and populate  the list.
        url = "push.php?competitionId=" + competitionId + "&lastPoll=1999-01-01 22:00:00"; 
    } else { // We have polled once, send the date and time of that last poll to capture only new entries.
        url = "push.php?competitionId=" + competitionId + "&lastPoll=" + lastPoll;   
    }

    $.get(url, function(data) {
        jsonData = $.parseJSON(data);

        var spot = $("#activityspot");
        var template = spot.find(".template");

        for (var j = 0; j < jsonData.items.length; j++) {
            var entryData = jsonData.items[j];
            var entry = template.clone();
            entry.removeClass("template");

            entry.find(".message").text(entryData.statusid);
            spot.prepend(entry);
        }

        if (onDone) {
            onDone();
        }

        lastPoll = js_yyyy_mm_dd_hh_mm_ss();

    });
}
var lastPoll=null;
函数加载活动(onDone){
var competitionId=$(“主体”).attr(“数据competitionId”);
console.log(lastPoll);
如果(lastPoll==null){//我们从未进行过轮询,我们希望提取所有内容并填充列表。
url=“push.php?competitionId=“+competitionId+”&lastPoll=1999-01-01 22:00:00”;
}否则{//我们已经轮询过一次,请发送上次轮询的日期和时间以仅捕获新条目。
url=“push.php?competitionId=“+competitionId+”&lastPoll=“+lastPoll;
}
$.get(url、函数(数据){
jsonData=$.parseJSON(数据);
风险值点=$(“#活动点”);
var template=spot.find(“.template”);
对于(var j=0;j
您正在以相反的时间顺序生成结果,但同时也以相反的顺序将结果添加到页面中(使用
.prepend
)。最终的结果是这两个反转相互抵消,这样每一批结果都会按时间升序添加到列表的顶部


如果想要以相反的顺序显示它们,只需从查询中去掉
DESC
限定符,并依靠
.prepend
调用将每个连续条目添加到页面顶部。

我可以再问一个问题吗?关于为每个活动构建模板,我可以在这两行中添加更多JSON内容吗?例如,如果我想把图像也放在那里,并给图像一个特定的类,我如何将所有这些都放在一个“条目”中?entry.find(“.message”).text(entryData.statusid);现场预压(入口);