как слушать возвращенный объект JSON с помощью JQuery - PullRequest
3 голосов
/ 13 декабря 2010

У меня есть страница с формой, в которой есть элемент ввода загрузки файла, нацеленный на скрытый фрейм. Когда форма публикуется в iframe, сервер обрабатывает файл и возвращает объект json. Я не уверен, как использовать jquery или обычный старый javascript для прослушивания возвращенного объекта. У меня есть код для моего iframe, например ...

$("#upload_target").load(function () {
   //what to do here - how do I get the json object?
});

Кто-нибудь знает, как подключить jquery для прослушивания объекта json, который отправляется обратно в iframe? Спасибо.

Ответы [ 3 ]

5 голосов
/ 13 декабря 2010

Я наконец-то понял, как это сделать ....

$("#upload_target").load(function (data) {
    if (data != null){
        var obj = jQuery.parseJSON(data);
        //...work with obj here.
    }
});

Правильно ли это или нет, это работает.

edit - на самом деле я немного опередилсебя.вот правильный код ....

$("#upload_target").load(function (){
        var retval = $(frames['upload_target'].document).text();
        if (retval != null)
        {
            try{
                var obj = jQuery.parseJSON(retval);
                //...work with obj here.
            }catch(err){}
        }
});

Одна вещь, которую я должен был также изменить, была уверенность, что мое действие контроллера MVC устанавливало JSONResult.ContentType = "text / plain".В противном случае я получаю диалоговое окно сохранения как загрузки.

4 голосов
/ 13 декабря 2010

Вы не должны использовать .load() для этого вида запроса.Вставляет ответ в выбранные элементы.Это, конечно, не то, что вы хотите, когда говорите об объектах.Попробуйте $.getJSON() (или $.post() с json как dataType):

// $.getJSON uses HTTP GET
$.getJSON('http://example.com/ajax', function (data) {
   // data is an object
});

// the same with $.post for POST requests
$.post('http://example.com/ajax', function (data) {
   // data is an object
}, 'json');
0 голосов
/ 13 декабря 2010

Вы должны использовать load следующим образом:

$("#upload_target").load(
   "http://example.com/myjson.php", 
   function(response, status, xhr) {

   });

Но для Ajax и JSON вы должны использовать post $. GetJSON или $. Get или $. Post или $ ajax (эти функции также принимают в качестве параметра функцию обратного вызова с аргументами, содержащими результат).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...