2010-07-26 54 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