2012-06-18 36 views
0

我有以下JS代码是不能工作:笨2.1和JQuery AJAX如预期

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

问题是以下几点:它始终是成功的,即使笨函数返回false。另外,我需要这个函数在成功时追加输入字段一次(此时它正在追加每个焦点)。 问题在哪里,我做错了什么?

+0

什么是成功?你的意思是ajax回调'成功'?错误只会在HTTP错误(例如, 404 –

+0

是的,回调'成功'总是被激活,即使查询中没有结果。 – Sasha

+0

这是设计。成功意味着没有服务器错误。你需要在你的回调中测试查询成功的输出 –

回答

1

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

相反,使用show_eror()注册错误,并输出一些别的(使用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'; 
    } 
+0

这是工作:)。但是,现在我需要解决问题的第二部分。我怎样才能从成功回调中追加输入字段一次? (目前它正在追加每个焦点) – Sasha

+0

我设置了标题状态代码400,403等。'$ this-> output-> set_status_header(code,'text');' – gorelative

0

您可以从服务器到客户端返回多个值,和你在事件的“成功”阿贾克斯想要什么(添加参数“数据”):

$.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'); 
      } 
     });