Итерация по выводу JSONP MooTools в JavaScript - PullRequest
0 голосов
/ 29 декабря 2010

Я экспериментировал с платформой запросов / ответов .NET WCF под названием Agatha. Один из примеров - использование MooTools для вызова расширения JSONP, а затем отображение результатов на странице в приложении ASP.NET MVC.

Я адаптировал пример, который возвращает единственную строку для вызова созданной мной службы, которая возвращает коллекцию клиентов (из базы данных AdventureWorks).

У меня очень мало опыта работы с JavaScript в целом, и я застрял, создавая функцию, которая будет получать выходные данные из службы:

Request.JSONP.request_map.request_0({"ProcessJsonRequestsResult":[{"__type":"GetCustomerDetailsResponse:#Reference.ServiceLayer.Common.AdventureWorks.RequestAndResponse","Exception":null,"ExceptionType":0,"IsCached":false,"Customers":[{"CompanyName":"Trailblazing Sports","CustomerId":187,"FirstName":"Frank","LastName":"Campbell","MiddleName":null},{"CompanyName":"Authorized Bike Sales and Rental","CustomerId":199,"FirstName":"Roger","LastName":"Lengel","MiddleName":null},{"CompanyName":"Westside Plaza","CustomerId":599,"FirstName":"Raul","LastName":"Casts","MiddleName":"E."},{"CompanyName":"Westside Plaza","CustomerId":29641,"FirstName":"Raul","LastName":"Casts","MiddleName":"E."},{"CompanyName":"Trailblazing Sports","CustomerId":29938,"FirstName":"Frank","LastName":"Campbell","MiddleName":null},{"CompanyName":"Authorized Bike Sales and Rental","CustomerId":29942,"FirstName":"Roger","LastName":"Lengel","MiddleName":null}]}]});

И позвольте мне повторить его, чтобы я мог вывести результаты на страницу. Может ли кто-нибудь указать мне правильное направление?

Ответы [ 2 ]

2 голосов
/ 30 декабря 2010

@ gladontbelong: С JSONP вам не нужно использовать JSON.decode

@ Джон Каттенхорн: Вы должны использовать событие onComplete, как в примере в документации: http://mootools.net/docs/more/Request/Request.JSONP

// ...

    onComplete: function(data){
        // You can, for example, iterate over the data
        // Assuming you have MooTools 1.3
        Object.each(data, function(value, key){

        });
    }

// ...

Вот как вы должны использовать данные, переменная Request.JSONP.request_map.request_0 также является приватной.

0 голосов
/ 29 декабря 2010

при условии, что вы получаете ответ на запрос в формате Json, вам нужно будет использовать Object.each для итерации объекта

var response = '{"age": "25 years", "height": "170 cm", "weight": "120 kg", "name": "John", "lastName": "Doe"}';

var json = JSON.decode(response);
Object.each(json, function(item,index){
    alert("index:" + index + " item:" + item);
});

здесь я используюJSON.decode только для проверки ... я считаю, что JSONP уже дает вам объект json

Надеюсь, это поможет

...