CodeIgniter / jQuery - вызов Ajax возвращает полную HTML-страницу вместо моего эха - PullRequest
8 голосов
/ 12 апреля 2011

На мой взгляд, у меня есть вызов ajax:

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

        });

функция get_cal в моем контроллере Planner:

function get_cal()
{
    echo "dinosaurs";
}

Однако вместо возврата «динозавров» возвращается полная HTML-страница. Я не могу понять, почему. Мысли? Большое спасибо.

Ответы [ 8 ]

11 голосов
/ 16 апреля 2011

Я решил это, используя косую черту, как это было предложено в комментариях к моему вопросу.

$.ajax({
  type: "POST",
  url: "/planner/get_cal",
  dataType: "text",
  data: {current_month: current_month},
  success: function(msg){
    alert(msg);
  } 
});         
4 голосов
/ 16 октября 2012

Вы также можете получить его, добавив exit после echo в свой php-файл, как показано ниже:

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

Это будет работать. :)

0 голосов
/ 04 февраля 2019

// Просмотр главной страницы

$("#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 }} ?>
0 голосов
/ 06 октября 2013

Просто хотел упомянуть: URL-адрес действительно будет зависеть от того, как у вас настроены .htaccess и структура папок. Поэтому лучше всего попробовать несколько URL-адресов, т.е.
../../controller/method
../controller/method
server_folder / index.php / контроллер / метод
http://example.com/server_folder/index.php/controller/method
и затем выберите тот, который лучше всего работает в данной ситуации.

0 голосов
/ 10 марта 2012

Проблемы такого типа возникают, когда ваш php-файл и html-файл не находятся на правильном пути, чтобы сервер apache мог анализировать php-файлы.Без упоминания type: 'text' и любого другого формата, Ajax будет работать.Но убедитесь, что ваш сервер достигает php-файла.В противном случае весь файл будет обработан как текст и возвращен.

0 голосов
/ 22 августа 2011

Для всех, кто использует Zend Framework, у меня были те же проблемы, когда ответ AJAX возвращал полный HTML вместо ответа json_encode(). Это было решено добавлением следующего к моему контроллеру:

    if ($this->getRequest()->isXmlHttpRequest())
    {
        $this->_helper->layout()->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
    }
0 голосов
/ 13 апреля 2011

При использовании структуры CodeIgniter uri-сегментов Controler / Method я обнаружил, что гораздо проще использовать ../../controller/method в качестве моих URL-адресов в запросах jquery ajax.Я также рекомендую указать dataType, чтобы строка анализировалась и возвращалась как объект.

Вот пример;


$.ajax({  
     type: "POST",  
     dataType: "json",  
     url: "../../controller/method",  
     success: mySuccessFunction  
}); 
0 голосов
/ 12 апреля 2011

Попробуйте установить для dataType значение "text"


$.ajax({
  type: "POST",
  url: "planner/get_cal",
  data: {current_month: current_month},
  dataType: "text",
  success: function(msg){
      alert(msg);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...