Reputation: 41
I am trying to learn jQuery AJAX, and keep getting the same error when trying to read a JSON file. Here is the javascript code:
$(function (){
var $orders = $('#orders');
$.ajax({
type: 'GET',
url: '/api/orders',
success: function(orders) {
$.each(orders, function(i, order) {
$orders.append('<li>my order</li>');
});
}
});
});
Here is the JSON code:
"order":[
{"id":1, "name":"Ben", "drink":"Americano w/ Creme"},
{"id":2, "name":"Ben2", "drink":"Americano w/ Creme2"},
{"id":3, "name":"Ben3", "drink":"Americano w/ Creme3"}
]
I keep getting this error:
Uncaught TypeError: Cannot use 'in' operator to search for '191' in "order":[
{"id":1, "name":"Ben", "drink":"Americano w/ Creme"},
{"id":2, "name":"Ben2", "drink":"Americano w/ Creme2"},
{"id":3, "name":"Ben3", "drink":"Americano w/ Creme3"}
]
jquery.js:584
isArraylikejquery.js:359
jQuery.extend.eachmain.js:10
$.ajax.successjquery.js:3143
jQuery.Callbacks.firejquery.js:3255
jQuery.Callbacks.self.fireWithjquery.js:9309
donejquery.js:9713
jQuery.ajaxTransport.send.callback
Does anyone have any idea why I keep getting this error? Thanks in advance for anyone's help.
Upvotes: 2
Views: 5400
Reputation: 77482
Set dataType: 'json'
, because orders
is JSON String not JS Object
$.ajax({
dataType: 'json',
type: 'GET',
url: '/api/orders',
success: function(orders) {
$.each(orders, function(i, order) {
$orders.append('<li>my order</li>');
});
}
});
dataType: 'json'
- Evaluates the response as JSON and returns a JavaScript object.
Upvotes: 4