CodeIgniter ile AJAX kullanmayı öğrenme

2 Cevap php

Bu tür ben o kadar zor JavaScript öğrenmek bulmak utanç verici, ama oluyor ..

Diyelim ki bu gibi gerçekten basit bir denetleyicisi var diyelim:

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; }

    }

}

Evet, muhtemelen haha, iyi yazılmış olabilir.

Ne bilmek istiyorum - bu (JavaScript tarafından okunabilir bir şey verir, böylece ne kadar (Ben daha sonra doğrulama ve modelleri hakkında endişe edeceğiz) bir formda bir sayı göndermek için JavaScript kullanabilirsiniz, nasıl benim testi () fonksiyonu yazmak gerekir I)? DOĞRU dönüş muhtemelen, belki XML veya JSON veya bunun gibi bir şey işe yaramaz varsayarak yaşıyorum ve nasıl JavaScript ile veri girebilirim?

Ben bu konuda yardımcı olacaktır jQuery gibi çerçeveler var biliyorum, ama şu anda sadece basit düzeyde onu anlamak istiyorum ve ben buldum tüm kılavuzlar ve rehberler benim için bugüne kadar derinlemesine yol da vardır. Bir jQuery örnek veya ne olursa olsun çok iyi olurdu.

Çok teşekkürler :)

2 Cevap

sadece temelde bunu yazdırmak ve javascript ile yeniden yakalama bu bilgiler olacaktır:

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

Lütfen javascript şöyle görünebilir:

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');

Yukarıdaki kod hesap tarayıcıya özgü sorunları almaz, ama firefox/ie7 çalıştırmak gerekir, en azından ben inanıyorum.

Burada tüm Yukarıdakilerin bir jQuery örnek:

var options = {
    'someNumber' : 12
}

$.post('/front/test', options, function(data) {
    alert(data); // should print "Number is 12"
});

Ayrıca yukarıda da belirtildiği gibi, standart Javascript AJAX çağrısı kullanırken 'XMLHTTPRequest' tepkisi başlıklarında dönülen olmadığını CodeIgniter'daki buldum.

$this->input->is_ajax_request();

Eğer AJAX POST isteği işlemek için jQuery kullanmak sürece girdi Yardımcı hiç doğru dönmez.

Ben de işe yaramadı bu makalede yöntemi denedim: http://developer.practicalecommerce.com/articles/1810-The-Benefit-of-Putting-AJAX-and-CodeIgniter-PHP-Together

Bu benim sonunda kullanılan budur:

    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
    }

Muhtemelen benim CI yüklemek yapmak için bir yapılandırma sorunu nedeniyle, henüz araştırmak için zamanım olmadı.