2015-09-22 137 views
1

這是我試圖實現的,我有一個控制器中的函數,它生成一個隨機密碼並返回相同的值,單擊按鈕時我想捕獲生成的密碼並顯示它在視圖(密碼字段)中。這裏是jQuery的/ AJAX調用:使用AJAX/JQuery獲得Codeigniter控制器方法的響應

$(document).ready(function(){ 
    $("#generate_password").click(function(){ 
     $.ajax({ 
     type: "GET",  
     dataType: 'text', 
     url: "http://127.0.0.1/public/admin/content/manufacturers/generate_password",     
     async:false, 
     success: function(resp){ 
      alert(resp); //this alerts BLANK 
     }, 
     error: function(xhr, textStatus, error){ 
       console.log(xhr.statusText); 
       console.log(textStatus); 
       console.log(error); 
      } 
     });  
    }); 
}); 

控制器功能:

public function generate_password($length = 9) 
{ 
    return $password_str; 
} 
  1. 是這個調用控制器的方法正確的方法是什麼?

  2. 爲什麼我會在alert中獲得空白值,即使在php中打印時我的值是否正確?

  3. 因爲它在管理區域可以這樣做的原因,不這麼認爲,但是有沒有因爲令牌的干擾?

+0

首先:通過HTTP執行此操作顯然是不安全的。考慮需要HTTPS。 – rodamn

+0

第二:您可以嘗試分而治之以確定客戶端或服務器是否失敗。您可以使用curl等手動方式發送請求,以查看響應的內容。乍一看,在ajax調用中我沒有看到任何明顯的東西,所以這就是爲什麼我首先建議您將客戶端ajax排除在外。 – rodamn

+0

我理解你的擔憂,但只是試圖讓它正確的第一,然後我會在安全方面的工作 –

回答

1

在大多數情況下,它是去工作好了,但是你可以使用JSON格式(和公正的json_encode/json_decode將完成這項工作適合你),通過GET方法和其他一些修改,不發送。 你確定這個url是正確的,如果你在瀏覽器中打開它,會發生什麼?

+0

以及我也試過,但在這種情況下,我得到NULL空白值,一直試圖太多的選擇,但最終結果似乎同樣,沒有輸出。真的想知道是否正確調用控制器方法,或者有另一種方法嗎? –

+0

當我直接打開網址它顯示我的空白頁 –

0

您必須使用echo函數中的變量代替return。因爲return將值返回給調用者,而echo將某些內容發送給瀏覽器。 JavaScript只會理解發送到瀏覽器的數據。因此,如下編輯功能代碼:

public function generate_password($length = 9) 
{ 
    echo $password_str; 
} 

在另一方面,你應該通過HTTPS做這個,而不是HTTP通過@rodamn

+0

試圖與回聲以及相同的結果,就像之前說的URL只是爲本地系統,活將是https –

+0

我認爲你的網址是不正確的。嘗試啓用'url_helper'並將您的ajax url設置更改爲'「<?php echo base_url()?>/Controller_name/Function_name」 – jayantS

相關問題