0

私は次のJSコードを持っています:

var forma = $('form#mali_oglas'),
    pomoc = $('div[role=pomoc]'),
    div = $('.mali_oglas_pomoc'),
    input = forma.find('input, textarea'),
    code = forma.find('#code');   

    input.on('click', function(){
        var name = $(':input:focus').attr("name");
        pomoc.fadeOut('slow').promise().done( function(){ div.find("[data-pomoc='" + name + "']").fadeIn('slow'); });            
    });

    code.on('focusout', function(){
        console.log(code.val());
        $.ajax({
           type: 'POST', 
           url: '<?php echo base_url() ?>global_info/gi_get_ad_payment_code',
           data: 'code=' + code.val(),
           success: function(){
             for(i = 1; i<=4; i++)
            {
               code.after('<label for="image' + i +'">Slika</label><input type="file" name="userfile" id="image' + i +'" />');
            }  
            code.after('<input type="hidden" name="time" value="' + time + '"');
           },
           error: function(){
               alert('nije uspeh');
           }
        }); /* KRAJ NA AJAX */
        });

およびコードイグナイター機能:

function gi_get_ad_payment_code()
        {
            $q = $this->db->get_where('code_payment', array('code' => $_POST['code']));
            if ($q->num_rows() == 0 ){
                return FALSE;
            } else 
            {
                return TRUE;
            }
        }

問題は次のとおりです: codeigniter 関数が false を返す場合でも、常に成功します。また、成功時に入力フィールドを1回だけ追加するには、この関数が必要です(現時点では、すべてのフォーカスアウトに追加されています)。問題はどこにありますか、何が間違っていますか?

4

2 に答える 2

1

trueCodeIgniter コントローラ メソッドから、またはメソッドを返しfalseても、クライアントに返されるものには影響しません。

代わりに、 を使用show_eror()してエラーを登録し、成功した場合は別のものを出力します(CodeIgniters View system を使用するechoか、より好ましくはCodeIgniters View systemを使用します)。

    $q = $this->db->get_where('code_payment', array('code' => $_POST['code']));

    if ($q->num_rows() == 0 ){
        show_error('Whoops, no results :(');
    } else 
    {
        echo 'Success';
    }
于 2012-06-18T10:43:23.130 に答える
0

サーバーからクライアントに複数の値を返すことができ、イベント "success" ajax (パラメーター "data" を追加) で必要なことを実行できます。

$.ajax({
           type: 'POST', 
           url: '<?php echo base_url() ?>global_info/gi_get_ad_payment_code',
           data: 'code=' + code.val(),
           success: function(data){
                switch(data)
                {
                  case 'success':
                        code.after('<label for="image' + i +'">Slika</label><input type="file" name="userfile" id="image' + i +'" />');
                        break;

                  case 'whoops':
                        // ....
                        break;

                  default:
                        code.after('<input type="hidden" name="time" value="' + time + '"');
                        break;
                }
           },
           error: function(){
               alert('nije uspeh');
           }
        });
于 2012-06-18T13:39:53.847 に答える