2010-07-26 23 views
2

我一直在使用php/CI進行編碼,現在我已經開始掌握它了,但我試圖讓跳躍使用jQuery +一些Ajax的東西,我似乎無法得到它上班。這就像劇本甚至沒有被看到。首先嚐試在ajax上看不到腳本?

我想要做的是當用戶點擊提交按鈕時調用java/test函數。我想添加一些類似if(ajax)的東西,這就是爲什麼我在表單數據中有這樣的地方,但沒有遮罩它所謂的提交函數 - 我添加了返回false,因此它不會觸發submit函數,但它仍然是。

這是我的代碼,任何幫助將是偉大的。由於

java.php //控制器

<?php 

class Java extends Controller{ 

    function index(){ 
     $this->load->view('java_view'); 
    } 

    function submit(){ 
     $one = $this->input->post('one'); 
     $two = $this->input->post('two'); 

     echo $one; 
    } 
      function test(){ 
     $one = $this->input->post('one'); 
     $two = $this->input->post('two'); 

     echo $two; 
    } 


} 

java_view.php // viewfile

<html> 
<header> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 

<script type="javascript"> 
    $(document).ready(function(){ 
     $('#submit').click(function(){ 

      var form_data = { 
       one: ('#one').val(), 
       two: ('#two').val(), 
       ajax: '1', 
      }; 

      $.ajax({ 
      url: "<?php echo site_url('java/test'); ?>", 
      type: 'POST', 
      data: form_data, 
      success: function() { 
       alert('success'); 
      } 
      }); 
          return false; 
     }); 
    }); 
</script> 

</header> 

<body> 

<?php 

echo form_open('java/submit'); 

//setting up the fields 
$form_data = array(
    'name' => 'one', 
    'id' => 'one', 
); 

echo "<p> One </p> <br/>"; 

echo form_input($form_data); 

$form_data = array(
    'name' => 'two', 
    'id' => 'two', 
); 

echo "<br/> <p>Two</p> <br/>"; 

echo form_input($form_data); 

$form_data = array(
    'name' => 'submit', 
    'id' => 'submit', 
    'value' => 'Submit', 
); 
echo "<br/>"; 

echo form_submit($form_data); 
echo form_close(); 

回答

5

這條線:

$('#submit').onclick(function(){ 

應該是:

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

我認爲#submitinput type="submit"否則頁面將重新加載,除非你把return false在點擊處理程序結束。

更多信息:

http://api.jquery.com/click/

更新:

試試這個(添加live和其他一些修改):

$(document).ready(function(){ 
    $('#submit').live('click', function(){ 

     var form_data = { 
      one: ('#one').val(), 
      two: ('#two').val(), 
      ajax: '1', 
     }; 

     $.ajax({ 
     url: "<?php echo site_url('java/test'); ?>", 
     type: 'POST', 
     data: form_data, 
     success: function() { 
      alert('success'); 
     }); 

     return false; 
    }); 
}); 
+0

感謝您的支持,但並不完全符合我的要求(我的錯誤並不明確)如果您可以再看一次,我編輯了我的帖子。也添加了返回錯誤位。謝謝 – tshauck 2010-07-26 19:30:49

+0

@tshauck:請看我更新的答案。請嘗試更新的代碼。 – Sarfraz 2010-07-26 19:33:40

+0

嗨,我已經試過了代碼,它仍然發射提交功能,因爲它會如果點擊沒有JavaScript。 – tshauck 2010-07-26 19:49:28

2

更妙?

$('#submit').live("click", function(){ 

如果要動態地更新DOM在所有或您的onclick事件可以被稱爲不是每個頁面加載一次它是更安全的使用實況()

http://api.jquery.com/live/

+0

嗨,很好的建議,編輯我的帖子是爲了更多我要去的。如果你能再看一眼,那會很好。謝謝。 – tshauck 2010-07-26 19:31:15

1

只是一個想法。 ..你有沒有嘗試explicitaly在JavaScript中說明Ajax調用的URL?這可能是因爲它不理解跳轉到php來回顯URL路徑。

+0

我希望它是,我已經測試它硬編碼,它不工作。 (還是)感謝你的建議。 – tshauck 2010-07-26 21:51:06