Reputation: 1461
I have been trying to load some data from a json table using jQuery.
For some reason it's not working but I believe I had covered every aspect? I am hoping it is a syntax error that maybe has slipped through and not a total cock up from my part.
This is where I am at:
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;
}
Console Error:
(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/
Upvotes: 1
Views: 79
Reputation: 1196
Check I have updated the fucntions, as your ajax not working so I have added the dummy data above.
$(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;
}
});
Upvotes: 1
Reputation: 5437
You must have to set a header
header("Access-Control-Allow-Origin: *");
In your functions.php that's where you are requesting with Ajax.
See this for more information:
"No 'Access-Control-Allow-Origin' header is present on the requested resource"
Upvotes: 1