2010-12-16 41 views
0

下面我的代碼在代碼點火器1.7.1中工作正常,現在無法調用控制器方法user/checkAvailability?requestSource = USER_AVAILABILITY它發揮了錯誤塊和打印警報作爲警報('內部錯誤');無法處理代碼中的Ajax請求ignitor1.7.3

我發現沒有jQuery的Ajax請求的不工作..

無法理解爲什麼它不打算叫控制器的方法,

請幫

function checkAvailability(){ $.blockUI({message: null}); 
    var newMessage = 'E1'; 
    $('#searchLoading').show();  alert('I am here');  $.ajax({ 
       type: "post", 
       url: "user/checkAvailability?requestSource=USER_AVAILABILITY", 
       cache: false,    
       data: "userName=" + $("#userName").val(), 
       success: function(json){ 
        alert("Printing Json"); 
        try{ 
         $.unblockUI();     
         var obj = JSON.parse(json);           

         if(obj[0].STATUS=='true'){             
          newMessage = "E15"; 
          $('#checkUser').hide();       
         }else{ 
          newMessage = "E16";      
          $("#checkUser").hide();      
         }     
         showMessage(newMessage); 
         $('#searchLoading').hide(); 
        }catch(e) {  
          alert('In side Exception'); 
          showMessage("E1"); 
          $.unblockUI(); 
          $('#searchLoading').hide(); 
        }  
       }, 
       error: function(){ 

        alert('In side Error'); 
        $('#searchLoading').hide(); 
        $.unblockUI();     
        $("#checkUser").hide();      
        showMessage(newMessage);   
        $("form")[0].reset(); 

       }  }); 
      } 

CI方法控制器用戶

/** 
     This method is used to check User Name availabiliy. 
    */ 

    public function checkAvailability(){  

     $userName = trim($this->input->post('userName')); 

     $query = $this->UserModel->getUser($userName); 

     $status =array("STATUS"=>"true"); 

     if($query){ 
      $status = array("STATUS"=>"false"); 
     } 

     echo json_encode (array($status)) ; 
    } 
+0

你可以發佈CI代碼嗎? – Fred 2010-12-16 08:48:14

+0

完成,請檢查 – Vicky 2010-12-16 08:50:21

+1

它是CodeIgniter。 – 2010-12-16 10:02:04

回答

1

該錯誤通常出現在AJAX請求發生時沒有到達頁面。

更改URL中的AJAX請求爲絕對路徑,即

url: "/user/checkAvailability?requestSource=USER_AVAILABILITY"

url: "http://site.com/user/checkAvailability?requestSource=USER_AVAILABILITY"

+0

您好嘗試過,但仍然有問題http://localhost/businesscaliber/index.php/user/checkAvailability?requestSource = USER_AVAILABILITY – Vicky 2010-12-17 05:29:09

1

的人們升級到1.7.3問題的最大原因是,他們覆蓋他們的配置文件。確保所有的配置文件都是在手動備份之前完成的,或者在之後恢復。

除了一行代碼中的安全修補程序(不會中斷AJAX)之外,Sod在1.7.3中都發生了變化。

+1

另外,這是AJAX,所以使用Firebug來調試它。如果您查看響應,您會立即發現錯誤。 – 2010-12-16 09:50:05

+0

Ajax是否需要配置?另外我嘗試用螢火蟲沒有發現錯誤。 – Vicky 2010-12-17 05:25:59

+0

對此AJAX調用的請求顯示的響應是什麼?你在查看控制檯選項卡嗎?你知道AJAX和Firebug是如何工作的嗎? :) – 2010-12-17 13:11:49

0

當在JQuery中發出AJAX請求時,也可能嘗試顯式地將dataType屬性設置爲json。可能是因爲JQuery試圖將JSON解析爲其他東西。

dataType:'json' 

此處瞭解詳情:http://api.jquery.com/jQuery.ajax/

而且我呼應菲爾的建議,請使用螢火蟲或Chrome的開發者控制檯,找出發生了什麼你的AJAX請求。

+0

JSON隨後有圖片時有響應。但我的問題是我無法處理Ajax請求 – Vicky 2010-12-17 05:31:05

+0

我明白了。我的錯。您正在您的回調函數中對JSON進行反序列化。我以爲你在使用JQuery自己的內置JSON反序列化。沒關係。繼續! :-) – 2010-12-17 11:13:59

0

確保你在你的config.php啓用查詢字符串

應在管路系統的151 /應用/配置/ config.php文件

變化

$config['enable_query_strings'] = FALSE; 

$config['enable_query_strings'] = TRUE; 

我假設你有一個原因嗎?requestSource = USER_AVAILABILITY ta陷入了網址。

另外是的,在你的ajax網址中使用完整的url(包括http://)。