Изучение того, как использовать AJAX с CodeIgniter

Немного смущает, что мне так сложно изучать JavaScript, но...

Скажем, у меня есть действительно простой контроллер:

class front extends Controller {

    public function __construct()
    {
        parent::Controller();   
    }

    public function index()
    {
        //nothing!
    }

    public function test () {

        $someNumber = $this->input->post('someNumber');

        if ($someNumber == 12) { return TRUE; }

    }

}

Да, наверное, это можно было бы написать лучше, ха-ха.

Что я хочу знать, так это то, как я могу использовать JavaScript для отправки числа в форму (позже я буду беспокоиться о проверке и моделях), как мне написать свою функцию test(), чтобы она возвращала что-то, читаемое JavaScript ( Я предполагаю, что return TRUE, вероятно, не сработает, возможно, XML или JSON или что-то в этом роде?), и как мне получить доступ к данным с помощью JavaScript?

Я знаю, что есть такие фреймворки, как jQuery, которые помогут с этим, но сейчас я просто хотел бы понять это на самом простом уровне, и все учебники и руководства, которые я нашел до сих пор, слишком глубоки для меня. Пример в jQuery или что-то еще было бы хорошо.

Большое спасибо :)


person Community    schedule 21.11.2008    source источник
comment
не нужно беспокоиться ни одно тело не идеально   -  person Himanshu Pandey    schedule 25.03.2013
comment
+1 Я тоже нахожу JavaScript немного сложным, но вы добьетесь этого, если попрактикуетесь.   -  person Anthony    schedule 02.05.2013


Ответы (2)


вы бы просто распечатали его и повторно записали эту информацию через javascript:

public function test() {
    $somenumber = $this->input->post('someNumber');
    if ($somenumber == 12) {
        print "Number is 12";
    } else {
        print "Number is not 12";
    }
}

ваш javascript может выглядеть примерно так:

var xhr;
xhr = new XMLHTTPRequest();
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
        // this is where the return information is
        alert('Status: '+xhr.status+' Response: '+xhr.responseText);
    }
}

xhr.open('POST', '/front/test');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send('someNumber=12');

приведенный выше код не учитывает специфические проблемы браузера, но, по крайней мере, я считаю, что он должен работать на firefox/ie7.

вот пример jQuery всего вышеперечисленного:

var options = {
    'someNumber' : 12
}

$.post('/front/test', options, function(data) {
    alert(data); // should print "Number is 12"
});
person Owen    schedule 21.11.2008
comment
Первый с XMLHTTPRequest у меня не работает и выдает ошибку, поскольку XMLHTTPRequest не идентифицирован.... или что-то в этом роде. Но второй с Jquery работает нормально. Большое спасибо. - person Enjoy coding; 18.08.2009

Я также обнаружил в CodeIgniter, что «XMLHTTPRequest» не возвращается в заголовках ответов при использовании стандартного вызова Javascript AJAX, как указано выше.

$this->input->is_ajax_request();

Помощник ввода никогда не возвращает true, если вы не используете jQuery для обработки запроса AJAX POST.

Я также попробовал метод из этой статьи, который не сработал: http://developer.practicalecommerce.com/articles/1810-The-Benefit-of-Putting-AJAX-and-CodeIgniter-PHP-Together

Это то, что я использовал в конце:

    var query_params = $('#data-form').serialize();
    $.ajax({
        type: 'POST',       
        url: 'process_this.php",
        data: queryParams,
        context: document.body,

    success: function(){
        alert('complete'); // or whatever here
    }

Возможно, это вызвано проблемой конфигурации, связанной с моей установкой CI, пока не было времени исследовать.

person Phil Lowe    schedule 15.12.2011