CodeIgniter 2.1和JQuery - ajax没有按预期工作

时间:2012-06-18 10:37:31

标签: php javascript jquery codeigniter

我有以下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 */
        });

和Codeigniter功能:

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,它也总是成功的。此外,我需要此函数在成功时仅添加一次输入字段(此时它会附加到每个焦点上)。 问题出在哪里,我做错了什么?

2 个答案:

答案 0 :(得分:1)

从CodeIgniter控制器方法返回truefalse不会影响返回给客户端的内容。

相反,如果成功,请使用show_eror()注册错误,并输出 else (使用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';
    }

答案 1 :(得分:0)

您可以从服务器返回多个值,并在“成功”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');
           }
        });