Изучение того, как использовать 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 (я предполагаю, что возврат TRUE, вероятно, не сработает, возможно, XML или JSON или что-то в этом роде?) и как мне получить доступ к данным с помощью JavaScript?
Я знаю, что есть такие фреймворки, как jQuery, которые помогут в этом, но сейчас я просто хотел бы это понять на самом простом уровне, и все обучающие материалы и руководства, которые я нашел до сих пор, слишком углублены для меня, Пример в jQuery или что-то тоже хорошее.
Большое спасибо:)
Ответы
Ответ 1
вы просто распечатали его в основном и повторно захватили бы эту информацию через 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"
});
Ответ 2
Я также нашел в CodeIgniter, что "XMLHTTPRequest" не возвращается в заголовках ответов при использовании стандартного вызова Javascript AJAX, как упоминалось выше.
$this->input->is_ajax_request();
Помощник ввода никогда не возвращает true, если вы не используете jQuery для обработки запроса POST AJAX.
Я также пробовал метод в этой статье, который не работал: 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, еще не успели исследовать.