Ошибка CodeIgniter AJAX, возвращающая ту же страницу - PullRequest
5 голосов
/ 31 января 2010

когда я пытаюсь сделать AJAX-запрос с jQuery в качестве ответа, я получаю HTML-код той же страницы! Вот предварительный просмотр (редактирование недоступно из-за его исправления)

вот мои файлы Изменить: я внес изменения в некоторые файлы

главный контроллер:

Class Main extends Controller {

function Main() 
{
      parent::Controller();   
}

function index(){

    $this->load->view('oxila_index');
}}

Представление Oxila_index (только остальная часть HTML в JS находится по ссылке выше)

 <script type="text/javascript">
        $(document).ready(function(){
            $("#inv").hide();
        });
        $(document).ready(function(){
            $("#submit").click(function(evt){

                $.post("/ajax/process", {
                    url: $("#url").val()
                }, function(response){
                        $("#output").html("");
                    $("#inv").show("slow"); 
                        $("#output").html(response);
                }, "text");
                evt.preventDefault();
            }); 
        });
    </script>

Контроллер Ajax

Class Ajax extends Controller {

    function process(){

        $data['url'] = $this->input->post('url');
        $this->load->view('test',$data);
        echo "hello world";
    }
}

Ответы [ 5 ]

1 голос
/ 02 февраля 2010

Это то, что человек на форумах сказал мне

у тебя определенно есть что-то на месте. Каждый путь, который я печатаю после того, как URL приводит меня к дому стр.

Попробуйте изменить свой протокол URL с АВТО на что то другое. (это может быть находится в файле config / config.php)

Я изменил его на «REQUEST_URI», и оно работает!

1 голос
/ 02 февраля 2010

Я только что попробовал вашу страницу, и она хорошо работает. К вашему сведению, я использую Google Chrome в Linux.

Хотя у меня есть несколько заметок. Сначала переместите script из <head> в нижнюю часть страницы выше </body>. Это лучшая практика, так как загрузка кода js блокирует одновременную загрузку другого элемента страницы, css и изображений.

Во-вторых, если вы ничего не меняете на стороне сервера, используйте GET вместо POST. Чтобы избежать кэширования в IE, просто добавьте еще один параметр со случайным значением.

В-третьих, строка $("#output").html(""); не обязательна. Вы можете поместить $("#output").html(response);, потому что .html() заменит любой существующий контент внутри контейнера. Нет необходимости его опустошать.

0 голосов
/ 01 февраля 2010

убедитесь, что ваша конфигурация имеет значение ЛОЖЬ;

$config['compress_output'] = FALSE;
0 голосов
/ 01 февраля 2010

Почему публичная функция?

public function test(){

    echo $this->input->post('lurl');

    }

Удалите public и просто сделайте его функцией как кто-либо еще: http://codeigniter.com/user_guide/general/controllers.html

Попробуйте также включить весь URL-адрес в JavaScript, чтобы попробовать, если он работает:

$.post("http://yourwebsite/oxila/test/")
0 голосов
/ 31 января 2010

У вас нет представления о вашей тестовой функции и вашей модели для обработки почтового запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...