2010-05-06 218 views
3

我認爲這很簡單。將Ajax變量傳遞給Codeigniter函數

我有一個Codeigniter函數,它接受來自表單的輸入並將它們插入到數據庫中。我想要Ajax化這個過程。此時該函數的第一行從窗體中獲取id字段 - 我需要將其更改爲從Ajax帖子(它引用包含必要值的窗體中的隱藏字段)獲取id字段。我該怎麼做?

我笨控制器功能

function add() 
{ 
    $product = $this->products_model->get($this->input->post('id')); 

    $insert = array(
      'id' => $this->input->post('id'), 
      'qty' => 1, 
      'price' => $product->price, 
      'size' => $product->size, 
      'name' => $product->name 
     ); 

    $this->cart->insert($insert); 
    redirect('home'); 
} 

而jQuery的Ajax的功能

$("#form").submit(function(){ 
     var dataString = $("input#id") 
     //alert (dataString);return false; 
     $.ajax({ 
      type: "POST", 
      url: "/home/add", 
      data: dataString, 
      success: function() { 

      } 
     }); 
     return false; 
    }); 

與往常一樣,許多在此先感謝。

回答

5
$("#form").submit(function(){ 
     var dataString = $("input#id") 
     //alert (dataString);return false; 
     $.ajax({ 
      type: "POST", 
      url: "/home/add", 
      data: {id: $("input#id").val()}, 
      success: function() { 

      } 
     }); 
     return false; 
    }); 

注意ajax方法中的數據選項。現在,您可以像使用控制器方法一樣使用$this->input->post('id')

+0

感謝索普,非常有用的知道。我只需要更改codeigniter函數的第一行,以便它不查找表單輸入,但jquery ajax – Matt 2010-05-06 07:17:23

+0

「表單輸入」和「AJAX變量」是相同的東西,它們都是POST參數一個HTTP請求。 AJAX不是存在的「事物」,只是方法的名稱。 – 2010-05-06 07:51:21

3

爲什麼不是猛踩到

url: "/home/add", 

末狀

url: "/home/add/" + $("input#id").val(), 

然後我猜笨就會把它像一個正常的參數...?

+0

是的它的工作....謝謝...! – Zohaib 2013-11-15 19:13:28