Php 学习如何将AJAX与CodeIgniter结合使用
我觉得学习JavaScript很难,这有点尴尬,但是 假设我有一个非常简单的控制器,如下所示:Php 学习如何将AJAX与CodeIgniter结合使用,php,javascript,ajax,codeigniter,Php,Javascript,Ajax,Codeigniter,我觉得学习JavaScript很难,这有点尴尬,但是 假设我有一个非常简单的控制器,如下所示: class front extends Controller { public function __construct() { parent::Controller(); } public function index() { //nothing! } public function test ()
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; }
}
}
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');
是的,那可能写得更好,哈哈
我想知道的是——我如何使用JavaScript以表单形式提交数字(我稍后会担心验证和模型),我应该如何编写test()函数,以便它返回JavaScript可读的内容(我假设return TRUE可能不起作用,可能是XML或JSON之类的东西?),如何使用JavaScript访问数据
我知道有像jQuery这样的框架可以帮助我实现这一点,但现在我只想从最简单的角度来理解它,而且我找到的所有教程和指南对我来说都太深入了。jQuery或其他任何语言中的示例也不错
非常感谢:)您只需将其打印出来,然后通过javascript重新捕获该信息:
public function test() {
$somenumber = $this->input->post('someNumber');
if ($somenumber == 12) {
print "Number is 12";
} else {
print "Number is not 12";
}
}
您的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; }
}
}
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"
});
我还在CodeIgniter中发现,在使用上述标准Javascript AJAX调用时,响应头中不会返回“XMLHTTPRequest”
$this->input->is_ajax_request();
除非您使用jQuery处理AJAX POST请求,否则输入助手永远不会返回true
我还尝试了本文中的方法,但没有成功:
这就是我最后使用的:
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安装有关的配置问题引起的,尚未有时间进行调查。第一个使用XMLHTTPRequest的配置问题对我不起作用,并且由于未识别XMLHTTPRequest而出现错误。。。。或者别的什么。但是使用Jquery的第二种方法工作得很好。非常感谢。不用担心没有身体是完美的+1我也觉得JavaScript有点挑战性,但你需要大量的练习才能达到。