2016-07-29 152 views
0

我一直在尝试使用jQuery从json表中加载一些数据。jQuery加载json的数据

由于某种原因,它不起作用,但我相信我已经涵盖了每个方面?我希望这是一个语法错误,可能已经溜过了,而不是从我的角度来看。

这是我在这里:

HTML:

<table id="fixtures"> 
    <thead> 
    <tr> 
     <th>Home</th> 
     <th>Away</th> 
    </tr> 
    </thead> 
    <tbody> 
    </tbody> 
</table> 

的javascript:

var jsonDataUrl = 'http://bushell.net/football/site/includes/functions.php'; 

$(function() { 
    $.ajax({ 
    type: 'GET', 
    url: jsonDataUrl, 
    async: false, 
    jsonpCallback: 'JSON_CALLBACK', 
    contentType: "application/json", 
    dataType: 'json', 
    success: function(data) { 
     addRows($('#fixtures'), data, ['data.homeTeamName','data.awayTeamName']); 
    }, 
    error: function(e) { 
     console.log(e.message); 
    } 
    }); 
}); 

function addRows(table, data, fields) { 
    var tbody = table.find('tbody'); 
    $.each(data, function(i, item) { 
    tbody.append(addRow(item, fields)); 
    }); 
    return tbody; 
} 

function addRow(item, fields) { 
    var row = $('<tr>'); 
    $.each(fields, function(i, field) { 
    row.append($('<td>').html(item[field])); 
    }); 
    return row; 
} 

控制台错误:

(program):1 Uncaught SecurityError: Blocked a frame with origin " http://fiddle.jshell.net " from accessing a frame with origin " http://jsfiddle.net ". Protocols, domains, and ports must match.(anonymous function) @ chrome-extension://geelfhphabnejjhdalkjhgipohgpdnoc/controllers/frame.js:1 jquery.min.js:4 Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/ . jquery.min.js:4 XMLHttpRequest cannot load http://bushell.net/football/site/includes/functions.php . Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://fiddle.jshell.net ' is therefore not allowed access.send @ jquery.min.js:4 (index):77 undefined (program):1 Uncaught SecurityError: Blocked a frame with origin " http://headwayapp.co " from accessing a frame with origin " http://jsfiddle.net ". Protocols, domains, and ports must match.(anonymous function) @ chrome-extension://geelfhphabnejjhdalkjhgipohgpdnoc/controllers/frame.js:1 http://rum-collector.pingdom.net/img/beacon.gif?path=http%3A%2F%2Fjsfiddle .…&resE=1110&dL=1115&dI=3903&dCLES=3912&dCLEE=4361&dC=6421&lES=6421&lEE=6436 Failed to load resource: the server responded with a status of 522 (Origin Connection Time-out)

http://jsfiddle.net/XtzjZ/671/

+0

你看到在控制台中的任何错误? –

+1

它似乎是一个跨域请求 –

+0

我添加了控制台错误信息 - 谢谢 – BCLtd

回答

1

检查我已经更新了类函数,因为你的Ajax没有工作,所以我加入了上面的虚拟数据。

http://jsfiddle.net/c2j1bc2h/

$(function() { 
data = [{'homeTeamName':'sdfds','awayTeamName':'dasdsa'},{'homeTeamName':'sdfds','awayTeamName':'dasdsa'},{'homeTeamName':'sdfds','awayTeamName':'dasdsa'},{'homeTeamName':'sdfds','awayTeamName':'dasdsa'},{'homeTeamName':'sdfds','awayTeamName':'dasdsa'},{'homeTeamName':'sdfds','awayTeamName':'dasdsa'},{'homeTeamName':'sdfds','awayTeamName':'dasdsa'},{'homeTeamName':'sdfds','awayTeamName':'dasdsa'},] 
addRows1($('#fixtures'), data, ['homeTeamName','awayTeamName']); 

function addRows1(table, data, fields) { 
    var tbody = table.find('tbody'); 

    $.each(data, function(i, item) { 
    console.log(item); 
    tbody.append(addRow1(item, fields)); 
    }); 
} 

function addRow1(item, fields) { 
    var row = '<tr>'; 
    $.each(fields, function(i, field) { 

    row +='<td>'+item[field]+'</td>'; 
    }); 
    row += '</tr>'; 
    return row; 
} 
}); 
1

您必须设置一个头

header("Access-Control-Allow-Origin: *"); 

在你的functions.php这就是你正在使用Ajax请求。

有关更多信息,请参见本:

"No 'Access-Control-Allow-Origin' header is present on the requested resource"

+0

嗨,我有以下头标题('Content-Type:application/json'); header(“Access-Control-Allow-Origin:*”); – BCLtd

+0

尝试添加一个头标题('Access-Control-Allow-Methods:POST,GET,OPTIONS');在你的文件中 –