2011-05-02 112 views
2

編輯:使用.htaccess刪除'index.php'創建了我剛發現的這個probem。現在我正在解決它。無法訪問我的Post值通過jQuery發送ajax

編輯:問題解決了。 javascript是錯誤的:url: "/login/"它需要一個尾部斜線。

ORIGINAL:在我家的看法,我創建了一個表格:

<div id="login"><?php 
echo form_open('login'); 
echo form_input('username', 'Username', 'id="username"'); 
echo form_submit('submit', 'Login', 'id="login_submit"'); 
echo form_close(); 
?></div> 

有了一些基本的JavaScript(感謝NETTUTS)我試圖執行一些Ajax:

$('#login_submit').click(function() { 

var form_data = { 
    username: $('#username').val(), 
    password: $('#password').val()  
}; 

$.ajax({ 
    url: "/login", 
    type: 'POST', 
    data: form_data, 
    success: function(msg) { 
     $('#login').html(msg); 
    } 
}); 

return false; 
}); 

正如你可以看到,它將表單值發送到登錄控制器。

class Login extends CI_Controller { 

function index() 
{ 
    if($this->input->is_ajax_request()) 
    { 
     echo '<h2>Login succeeded with ajax</h2>'; 
    } 
    else 
    { 
     echo '<p>But your ajax failed miserably</p>'; 
    } 
} 

} 

問題是,它不起作用。函數$this->input->is_ajax_request()輸出FALSE。忽略這一點,其他所有帖子數據都會丟失。 什麼都沒有通過。

我在做什麼錯?

+0

是您的jQuery的單擊處理'$(文件)。就緒(...'包裹? – karim79 2011-05-02 08:35:44

回答

2

我認爲你的問題可能是你實際上沒有發送到正確的腳本。您的網址/登錄信息看起來不像Codeigniter網址(http://domain.com/index.php/login或http://domain.com/my_app/index.php/login)。

嘗試將url更改爲控制器的完整url位置或正確的絕對路徑。或者:

url: "http://yourdomain.com/index.php/login", 

url: "/my_app/index.php/login", 

除非你重寫的URL,然後/登錄可能不會接觸到正確的腳本。

+0

我編輯的代碼這個腳本確實有效,控制器和它的index()方法確實被調用了,回顯出來的東西實際上會替換div的內容,這是後面的數據沒有通過。:( – Kriem 2011-05-02 08:59:08

+0

你可以console.log ()form_data發送它之前,確保數據是你期望的?還要確保你包裝jQuery在$(document).ready(function(){// jQuery否則jQuery將無法正確獲取輸入字段的值。 – Dormouse 2011-05-02 09:03:58

+0

我添加了文件準備功能。 Firebug說:對象{用戶名=「用戶名」,密碼=「密碼」}似乎後數據設置正確。 – Kriem 2011-05-02 09:09:33

0

這使我在正確的方向,當我使用PHP和JQuery的AJAX發送後值。我正在使用.htaccess重寫URL以刪除.php擴展名。 Post值沒有傳遞給我的sendmail.php文件。我解決了這個改變後請求的URL從

$.ajax({ 
          url:'sendemail.php', 
          method:'post', 
          data:{ 
           fname:fname, 
          }, 
          success:function (e) { 
           alert(e); 
          } 
         }); 

url:'/sendmail'