babin101
babin101

Reputation: 41

Keep getting "Uncaught TypeError: Cannot use 'in' operator to search for '191'" jQuery

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

Answers (1)

Oleksandr T.
Oleksandr T.

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

Related Questions