CodeIgniter / jQuery - Ajax调用返回完整的html页面而不是我的echo

时间:2011-04-12 15:14:42

标签: php jquery ajax codeigniter

在我看来,我有一个ajax电话:

    $(".previous").click(function() {
        $.ajax({
            type: "POST",
            url: "planner/get_cal",
            data: {current_month: current_month},
            success: function(msg){
                alert(msg);
            }

        });

我的Planner控制器中的get_cal函数:

function get_cal()
{
    echo "dinosaurs";
}

但是,它不会返回“恐龙”,而是返回完整的HTML页面。我无法弄清楚为什么。思考?非常感谢。

8 个答案:

答案 0 :(得分:11)

我通过使用我的问题评论中建议的前导斜杠来解决这个问题。

$.ajax({
  type: "POST",
  url: "/planner/get_cal",
  dataType: "text",
  data: {current_month: current_month},
  success: function(msg){
    alert(msg);
  } 
});         

答案 1 :(得分:4)

你也可以通过在你的php文件中添加echo之后的exit来获得它,如下所示:

function get_cal()
 {
    echo "dinosaurs";exit;
}

它会起作用。 :)

答案 2 :(得分:0)

尝试将dataType设置为“text”


$.ajax({
  type: "POST",
  url: "planner/get_cal",
  data: {current_month: current_month},
  dataType: "text",
  success: function(msg){
      alert(msg);
  }
});

答案 3 :(得分:0)

当使用Controler / Method uri段的CodeIgniter结构时,我发现在jquery ajax请求中使用../../controller/method作为我的URL更容易。我还建议指定一个dataType,以便解析该字符串并将其作为对象返回。

这是一个例子;


$.ajax({  
     type: "POST",  
     dataType: "json",  
     url: "../../controller/method",  
     success: mySuccessFunction  
}); 

答案 4 :(得分:0)

对于使用Zend Framework的任何人,我遇到的问题是AJAX响应返回完整的HTML而不是json_encode()响应。通过将以下内容添加到我的控制器来解决此问题:

    if ($this->getRequest()->isXmlHttpRequest())
    {
        $this->_helper->layout()->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
    }

答案 5 :(得分:0)

当您的php文件和html文件不在正确的路径上时,这些类型的问题就会出现,以便apache服务器可以解析php文件。 没有提到类型:'text'和任何其他格式,ajax也可以。 但请确保您的服务器已达到php文件。否则整个文件将被视为文本并返回。

答案 6 :(得分:0)

只是想提一下: 该URL将真正取决于您如何设置.htaccess和文件夹结构。 所以最好的方法是尝试几个网址,即: ../../controller/method
../controller/method
server_folder / index.php的/控制器/方法
http://example.com/server_folder/index.php/controller/method
然后选择在特定情况下效果最佳的那个。

答案 7 :(得分:0)

//主页视图

$("#button").click(function(e)
{
  value=$("#input_value").val();

  $.ajax({
  type: "POST",
  url: "<?php echo base_url(); ?>path",
  data: "type=get_path_details&mobile="+value,
  cache: true,
  dataType:"html",
  async: false,
  success: function(data)
  {
  $('.apend_new_div').empty().append(data);
  $('.scroll_card').css('overflow-x','scroll');
  }
  });

});

//控制器

public function path()
{   
  $id = $this->input->post("mobile");
  // Some function goes here
  // $template[''] = ;
  $this->load->view('ajax_page',$template);
}

// ajax视图页面

<?php if($_POST['type']=='get_path_details'){if(!empty($template)){ ?>
// Html code 
<?php }} ?>