10

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 を使用してフォームに数値を送信する方法 (後で検証とモデルについて心配します)、JavaScript で読み取り可能なものを返すように test() 関数をどのように記述すればよいか (おそらくTRUEを返すことはおそらくうまくいかないだろうと思います.おそらくXMLやJSONなどでしょうか?)、JavaScriptでデータにアクセスするにはどうすればよいですか?

これに役立つjQueryのようなフレームワークがあることは知っていますが、今は最も単純なレベルで理解したいだけで、これまでに見つけたすべてのチュートリアルとガイドは私には深すぎます. jQueryの例でも何でも良いでしょう。

どうもありがとう :)

4

2 に答える 2

15

基本的にそれを印刷し、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"
});
于 2008-11-21T07:34:22.103 に答える
3

上記のように標準の Javascript AJAX 呼び出しを使用すると、CodeIgniter で「XMLHTTPRequest」が応答ヘッダーに返されないこともわかりました。

$this->input->is_ajax_request();

jQuery を使用して AJAX POST 要求を処理しない限り、入力ヘルパーは true を返しません。

この記事の方法も試しましたが、うまくいきませんでした: 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 インストールに関連する構成の問題が原因である可能性がありますが、まだ調査する時間がありません。

于 2011-12-15T12:49:12.150 に答える