如何在ajax上获得另一个页面?

时间:2017-05-30 01:06:13

标签: javascript php jquery ajax

我的页面有问题,第一个代码(让我们说的是hompe.php)

<html>
<div id="trackingkp"></div>
</html>

然后在我的ajax上我就像这些

这样的代码
$( document ).ready(function() {
    var dataString = '';
    $.ajax
    ({
        type: "POST",
        url: host+"ajax/tracking/kp",
        dataType: 'html',
        success: function(html)
        {
            $('#trackingkp').html($(html).find('#trackingkp').html());
            //$("#trackingkp").html($(data).find('#trackingkp').html());
        } 
    });     
});

在我的ajax控制器上,我喜欢这些(我使用框架laravel)

public function tracking($url)
{
    //var_dump("AAA");

    $this->view('ajax/tracking/'.$url,[]);
}

在我的ajax /跟踪视图中

<?php
    //$json = array();
    $json = "<input type='text'></input>";
    echo json_encode($json);
?>

当我尝试显示

 Syntax error, unrecognized expression: "<input type='text'>

我已经解决了这个问题,我在不使用jQuery的情况下使用了另一个选项,所以同时,在加载视图home.php的控制器上,我尝试将加载视图也像这些

public function index(){

    is_header(); 
    $this->view('home',[]);
    $this->view('ajax/tracking/kp',[]); ---> I add these
    is_footer(); 
}

和ajax / tracking / kp(查看)我把这些代码

<input type='text'></input>

并且正在运作。

1 个答案:

答案 0 :(得分:0)

问题出在这一个:

success: function(html) {
    // Problem : $(html).find('#trackingkp').html(); 
    $('#trackingkp').html($(html).find('#trackingkp').html());
}

预期此html响应将返回json值 在你给定的[控制器]

<?php
    //$json = array();
    $json = "<input type='text'></input>";
    echo json_encode($json);
?>

因此,这相当于:

$("<input type='text'></input>").find('#trackingkp').html();  

在这种情况下,我认为您可能不需要调用另一个* .html()。您可以通过调用一次来简化/解决此问题:

$.ajax({
    type: "POST",
    url: host+"ajax/tracking/kp",
    dataType: 'json', // Kindly replace [html] to [json] since you are returning a [json] value
    success: function(html) {
        $('#trackingkp').html(html);        
    }
});

希望这有助于您的案例