2016-02-17 4 views
-1

Код jQuery, приведенный ниже, не работает для меня. Проблема, кажется, с $.each(), потому что, когда я пытаюсь alert(orders); или $mapinfo.append(orders); вместо петли, он выводит все данные и работает нормально, но внутри петли дает ошибку говоря:

SCRIPT5007: Invalid operand to 'in': Object expected внутри jquery-1.12.0.min.js (2,4211). Но я хочу, чтобы он получил всю информацию отдельно для следующего шага в моем проекте.

success: function(orders){ 
     $.each(orders, function(i, order){ 
     $mapinfo.append('<li>'+ order.type +'</li>'); 
     }); 
    } 

здесь данные, внутри orders

[{"id":"1","lat":"26.260012","lon":"50.615517","type":"Restaurant "},{"id":"2","lat":"26.261667","lon":"50.613792","type":"supermarket"},{"id":"3","lat":"26.260464","lon":"50.612705","type":"Restaurant "},{"id":"4","lat":"26.259348","lon":"50.613049","type":"supermarket"}]?> 

я попробовал писать jQuery.each() и $(orders).each(), но я всегда получаю ту же ошибку.

Edit1: уложив точку останова $.each вот что внутри orders ..

orders "[{\"id\":\"1\",\"lat\":\"26.260012\",\"lon\":\"50.615517\",\"type\":\"Restaurant \"},{\"id\":\"2\",\"lat\":\"26.261667\",\"lon\":\"50.613792\",\"type\":\"supermarket\"},{\"id\":\"3\",\"lat\":\"26.260464\",\"lon\":\"50.612705\",\"type\":\"Restaurant \"},{\"id\":\"4\",\"lat\":\"26.259348\",\"lon\":\"50.613049\",\"type\":\"supermarket\"}]?>"

ответ

2

Ваша правка говорит нам, что orders еще строка к тому времени, вы получите его. jQuery будет разбирать JSON перед вызовом вашего обратного вызова, если вы обслуживаете JSON с правильным Content-Type (application/json), что лучше, или если вы скажете jQuery ожидать JSON обратно, используя dataType: "json" в вашем запросе ajax.

В вашем случае, похоже, что это не происходит, потому что есть ошибка в праве JSON в конце концов, после закрытия ] на массив?:

>

The JSON в противном случае имеет смысл, просто выглядит как ошибка в файле PHP, создающем JSON. Исправьте это, и jQuery, вероятно, проанализирует строку перед ее передачей; если нет, добавьте Content-Type (или добавьте dataType: "json").