Javascript 如何在codeigniter中的ajax之后仅加载指定的div

Javascript 如何在codeigniter中的ajax之后仅加载指定的div,javascript,php,jquery,ajax,codeigniter,Javascript,Php,Jquery,Ajax,Codeigniter,根据我的点击,我有一个特定的类别列表。查询已被更改,并且我必须根据我的点击更改div 我尝试了一些方法,它检索正确的结果,但是它在div中显示了整个页面 着陆控制器: public function index() { . . . if(isset($_POST['cat'])) { $this->load->model('product_model');

根据我的点击,我有一个特定的类别列表。查询已被更改,并且我必须根据我的点击更改div

我尝试了一些方法,它检索正确的结果,但是它在div中显示了整个页面

着陆控制器

public function index()
    {   
        .
        .
        .

        if(isset($_POST['cat']))
        {
            $this->load->model('product_model'); 
            $condition=" WHERE p.status='Publish' AND u.group='Seller' AND u.status='Active' AND p.category_id IN (4) OR p.status='Publish' AND p.user_id=0 AND a.pricing IS NOT NULL AND p.category_id IN (4) GROUP BY p.id ORDER BY p.created DESC";
            $products_list_s = $this->product_model->view_product_details($condition);
            #echo "If";print_r($this->data['productDetails']);exit;
        }
        else
        {
            $condition = " WHERE p.status='Publish' AND u.group='Seller' AND u.status='Active' OR p.status='Publish' AND p.user_id=0 AND a.pricing IS NOT NULL GROUP BY p.id ORDER BY p.created DESC";
            $products_list_s = $this->product_model->view_product_details($condition);
        }
        $this->data['productDetails']         = $this->product_model->get_sorted_array($products_list_s,$products_list_u,'created','desc');
        .
        .
        .

        #echo $this->load->view('site/landing/landing',$data, TRUE);
        $this->load->view('site/landing/landing',$this->data);
    }
Jquery

$('.all_category_li a').on('click', function(e) {
    var cat = 'cat';
    $.ajax({
        type:'post',
        url:'<?php echo base_url();?>site/landing',
        data:{cat:cat},
        dataType:'html',
        success:function(data)
        {
            $('.product_listing').html(data);
        }
    });
});
$('.all_category_li a')。打开('click',函数(e){
var cat=‘cat’;
$.ajax({
类型:'post',
网址:'site/landing',
数据:{cat:cat},
数据类型:'html',
成功:功能(数据)
{
$('.product_listing').html(数据);
}
});
});
查看

<div>
<ul class="product_listing" id="product_listing">
.
.
.
</ul>
</div>

    . . .
我该怎么做


有人能帮我吗?

在jQuery中,您可以去掉结果,只显示元素中的结果。例如:

success:function(data)
{
    // Search Element (replace the element or ID with your element)
    var startPos = data.indexOf("<div id='divId'>");

    // Div element is found?
    if(startPos != -1)
    {
        // Add tag length to position
        startPos += 16;

        // Search Div closing tag starting from start position
        var endPos = data.indexOf("</div>", startPos);

        // Add data inside the Div element to the product listing Div
        $('.product-listing').html(data.substr(startPos, endPos - startPos));
    }
}
成功:函数(数据)
{
//搜索元素(用元素替换元素或ID)
var startPos=data.indexOf(“”);
//是否找到Div元素?
如果(startPos!=-1)
{
//将标记长度添加到位置
startPos+=16;
//从起始位置开始搜索Div结束标记
var endPos=data.indexOf(“,startPos”);
//将Div元素内的数据添加到产品列表Div中
$('.product list').html(data.substr(startPos,endPos-startPos));
}
}

也许你需要这样的东西

$( "#result" ).load( "ajax/test.html #container" );
当这个方法执行时,它会检索ajax/test.html的内容,但是jQuery会解析返回的文档以找到ID为container的元素。此元素及其内容将插入到ID为result的元素中,其余检索到的文档将被丢弃


我收到
参考错误:未定义数据
此错误。我应该如何首先定义数据。我已编辑了答案。您是否在
success:function()
中添加了此代码?这很奇怪。我的回答中没有登录到控制台。您是否编辑了开始和结束位置以搜索您的元素?很抱歉,我使用了错误的类名但现在我只得到了
”;var endPos=data.indexOf(“
”)这是我的结果。它只显示数据内容。你是否通过ajax获得整个页面,并且你只需要该页面的一个div?对吗?你的url“site/landing”返回html