Php 学习如何将AJAX与CodeIgniter结合使用

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 ()

我觉得学习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');
是的,那可能写得更好,哈哈

我想知道的是——我如何使用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有点挑战性,但你需要大量的练习才能达到。