为什么jQuery ajax在Chrome中工作但在Firefox或IE中不起作用?

时间:2015-10-23 14:31:54

标签: jquery json ajax google-chrome firefox

我尝试了几种jQuery ajax。 $.ajax , $.getJSON & $.get在Chrome中运行良好。 但是在Firefox或IE中都无效。我正在从同一目录中读取json文件。 json起源于desk.com的api。我正在使用php& cURL to grab&保存json。

$.ajax我也试过定义dataType Firebug没有错误。 console.log在firebug中返回ajax,它返回一个包含所有json数据但不显示到页面的Object。 警告它时会给出[object Object]

JS:

function getDesk($group_number)
{   
    now = Date();
    unixTimeMS = Date.parse(now);  
    var tempHtml = '<table class="table table-bordered" id="desk_data_table">'+
        '<thead style="background-color:#eee">'+
        '<tr>'+
        '<th>Available</th>'+
        '<th>Name</th>'+
        '<th>Created</th>'+
        '<th>Updated</th>'+
        '<th>Current login</th>'+
        '<th>Last login</th>'+
        '</tr>'+
        '</thead>'+
        '<tbody id="desk_data_table_body">';
    $url = $group_number + ".json";
    $.get( $url, function( resp ) {
        $.each( resp['_embedded']['entries'], function( key, value ) {
            updated = value['updated_at'].replace(/[TZ+]/g, " ");
            updatedKeep = value['updated_at'].replace(/[TZ+]/g, " ");
            updated = Date.parse(updated);
            difference = unixTimeMS - updated;
            if(difference < 604800000){
                lastLogin = value['last_login_at'].replace(/[TZ+]/g, " ");
                created = value['created_at'].replace(/[TZ+]/g, " ");
                updated = value['updated_at'].replace(/[TZ+]/g, " ");
                current = value['current_login_at'].replace(/[TZ+]/g, " ");

                if(value.available == true){
                    tempHtml += "<tr style='background-color:#9de7a2;'><td >" + value['available'] + "</td>";
                } else {
                    tempHtml += "<tr style='background-color:#f0a0a0;'><td >" + value['available'] + "</td>";
                }

                tempHtml += "<td nowrap='nowrap'> " +value['name']+"</td>";
                tempHtml += "<td nowrap='nowrap'> " + created + "</td>";
                tempHtml += "<td nowrap='nowrap'> " + updatedKeep + "</td>";
                tempHtml += "<td nowrap='nowrap'> " + current + "</td>";
                tempHtml += "<td nowrap='nowrap'> " + lastLogin + "</td></tr>"; 
            }
            else{ false; }
        });
        tempHtml += "</tbody></table>";
        $('#' + $group_number).html(tempHtml);
    });
}

getDesk(491244);

网页:

<div id="491244"></div>

THE JSON [filename = 491244.json]

{
    "_embedded": {
        "entries": [
            {
                "avatar": "http://www.gravatar.com/avatar/26536",
                "available": false,
                "created_at": "2014-04-08T19:10:41Z",
                "current_login_at": "2015-10-21T14:21:27Z",
                "email": "Matthew.Jamison@email.com",
                "email_verified": true,
                "id": 21912353,
                "last_login_at": "2015-10-19T20:50:22Z",
                "level": "siteadmin",
                "name": "Matt Jamison",
                "public_name": "Matt Jamison",
                "updated_at": "2015-10-21T14:21:27Z"
            }

        ]
    }
}

2 个答案:

答案 0 :(得分:2)

如果您希望自动解析JSON,则应使用$.getJSONresp[_embedded][entries]应为resp._embedded.entries或resp [&#34; _embedded&#34;] [&#34;条目&#34;]。当您不引用名称时,它会将它们用作变量,但它们没有值。

答案 1 :(得分:1)

可能是因为条件

   if(difference < 604800000){

由于日期对象和当前时间milles的不一致性而变化。

通过调试检查一下,或者暂时解决这个问题。