2013-08-21 4 views
0

Мне нужно выбрать div по id из html в json response.Jquery ajax parse html from json response

В стороне сервера:

ob_start(); 

    extract($this->validate($this->data)); 
    require("classes/View/". $this->view . ".phtml"); 

    $content = ob_get_contents(); 
    ob_end_clean(); 

    header('Content-type: application/json'); 

    echo json_encode(array(
     'messages' => $this->data["messages"], 
     'content' => $content 
)); 

и в стороне клиента:

$.ajax({ 
     type: "POST", 
     url: o.url , 
     dataType: "JSON", 
     data: o.ajax_data, 
     success: function(response) { 
        $("#mydiv").html($(response.content).find("#mydiv")); 
     } 
    }); 

Раньше, когда я использовал HTML, как DATATYPE и я вернулся простой HTML в ответ, все было функциональным. Я не могу понять правильное решение даже после нескольких часов исследований. Может ли кто-нибудь мне помочь?

=== UPDATE 1 ===

console.log (response.content) => { "сообщения": [], "содержание": "полный спасся HTML сайт здесь"}

+1

Вы не в состоянии обеспечить наиболее важную деталь: фактическое содержание ответа. – Brian

+0

Я уверен, что у меня есть в response.content загружена полная html-структура моего сайта. – user2694295

+0

Конечно, мое решение и ваше решение не работает - 'response.content' содержит абсолютно никаких' 'div id = mydiv"> 'so' jquery.find() 'не может найти его - он просто возвращает пустой объект jquery. ** Пожалуйста, отредактируйте файл вида и вставьте этот контейнер html div и некоторый текст **, и он будет работать. –

ответ

0

Вы размещаете #mydiv (элемент-заполнитель в ответ) в DOM-заполнитель #mydiv. Что вы, вероятно, хотите сделать, это разместить содержимое #mydiv от ответа на местозаполнитель.

Предположим, что ваш response.content правильно сформированный HTML код это должно работать:

var content = $(response.content).find("#mydiv").html(); // get html of #mydiv in response 
$("#mydiv").html(content); 
+0

Я пробовал ваше предложение. Но не работает. Мне нужно обновить часть сайта, поэтому я помещаю #mydiv (элемент заполнителя в ответ) в DOM placeholder #mydiv. В ответе.content У меня есть полная структура сайта ( ...). Это, вероятно, важный ключ моей проблемы, о котором я забыл. На самом деле console.log (content) => null – user2694295