Reputation: 3
I am getting some data from a js file("scripts/data.js"). It looks like valid JSON to me, yet, it is being caught/handled by the error handler in my jQuery.ajax() call.
This is the error message displayed:
Invalid JSON: var data = [
{
'id': '1',
'firstName': 'Megan',
'lastName': 'Fox',
'picture': 'images/01.jpg',
'bio': 'Megan Denise Fox was born May 16, 1986 in Rockwood, Tennessee. She has one older sister. Megan began her training in drama and dance at the age of 5 and, at the age of 10, moved to Florida where she continued her training and finished school. She now lives in Los Angeles, California. Megan began acting and modeling at the age of 13 after winning several awards at the 1999 American Modeling and Talent Convention in Hilton Head, South Carolina. Megan made her film debut as Brianna Wallace in the Mary-Kate Olsen and Ashley Olsen film, Holiday in the Sun (2001) (V). Her best known role is as Sam Witwicky\'s love interest Mikaela Banes in the first two installments of the Transformers series: Transformers (2007) and Transformers: Revenge of the Fallen (2009).'
},
{
'id': '2',
'firstName': 'Robert',
'lastName': 'Pattinson',
'picture': 'images/02.jpg',
'bio': 'Robert Pattinson was born on May 13, 1986, in London, England. He enjoys music and is an excellent musician, playing both the guitar and piano.\n\nWhen Robert was 15, he started acting in amateur plays with the Barnes Theatre Company. Afterward, he took screen role like Curse of the Ring (2004) (TV) (Kingdom of Twilight) as Giselher.\n\nIn 2003, Robert took on the role of Cedric Diggory in Harry Potter and the Goblet of Fire (2005). He got his role a week later after meeting Mike Newell in late 2003.\n\nHe has since been cast as Edward Cullen in the highly-anticipated film, Twilight (2008/I). His music will also be heard in the film. Additionally, Robert has completed upcoming roles as Salvador Dal� in Little Ashes (2008) and Art in How to Be (2008).'
}]
here is the bit of code that makes the call:
$(document).ready(function () {
$.ajax({
url: "scripts/data.js",
data: "nocache=" + Math.random(),
type: "GET",
dataType: "json",
success: function (source) {
data = source;
showInfo();
},
error: function (xhr, ajaxOptions, thrownError) {
alert("thrownError");
}
});
});
Upvotes: 0
Views: 85
Reputation: 382474
What you have here isn't JSON but JavaScript.
jQuery is also able to fetch and execute those scripts. Change the datatype in your $.ajax
command to dataType: "script"
or use the shortcut function $.getScript.
Upvotes: 1
Reputation: 944520
var data =
'
but must be delimited with "
You should make use of http://jsonlint.com/
Upvotes: 2
Reputation: 5165
Try taking off the var data =
. JSON is not javascript, and there is no assignment.
Try changing the single quotes to double quotes.
Here's an online JSON validator that can help: http://www.freeformatter.com/json-validator.html
Upvotes: -1