从json返回html数据时遇到问题

时间:2012-02-12 12:39:57

标签: ajax json jquery

我有jquery post功能

jQuery('.more-button').live('click', function(eve){

    var page = jQuery(this).attr('id').replace('more-button-','');

    loaded_messages += 1;

    jQuery.post('http://127.0.0.1/auth_system_1/user_activity/users_picture_number', { loaded_messages : loaded_messages }, function(data) {

                    jQuery('#ajax_content').append(data.html);


            }, 'json');

});

我的php函数返回json(我使用Codeigniter):

function users_picture_number()
{

        $per_page = (int)$this->input->post('loaded_messages');

        $user_id = 3;

        $data['images_list'] = $this->user_activity_lib->users_pictures($user_id, $per_page);

        $html = $this->load->view('front_end/ajax/ajax_users_pictures', $data);

        echo json_encode(array('html' => $html));
}

json返回响应html代码,但在顶部显示此行{"html":null}

它返回给我:enter image description here

如果我将此行$html = $this->load->view('front_end/ajax/ajax_users_pictures', $data);替换为$html = $this->load->view('front_end/ajax/ajax_users_pictures', $data, true);,则返回

enter image description here

我尝试在jQuery中显示返回json的html('#ajax_content')

如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

要在var中存储视图的html,正确的第二种方式是正确的:

$html = $this->load->view('front_end/ajax/ajax_users_pictures', $data, true);

对于测试,您可以更改方法以返回html并回显$ html的内容。

答案 1 :(得分:0)

您正在尝试发送JSON和普通HTML。在PHP中,您的$html变量为空。检查返回值的函数。您必须选择是否要传输JSON或HTML。你在ajax调用中将你的内容类型设置为json,所以请坚持下去,不要发送HTML。

答案 2 :(得分:0)

我遇到了类似的问题,结果是我在不使用htmlentities功能或类似功能的情况下打印了一些关键字符(重音字符)。