【问题标题】:First attempt at ajax, script not being seen?第一次尝试ajax,没有看到脚本?
【发布时间】:2011-03-21 04:17:22
【问题描述】:

我已经使用 php/CI 进行了一段时间的编码,并且开始掌握它的窍门,但我正在尝试使用 jQuery + 一些 ajax 的东西来实现飞跃,但我似乎无法获得它工作。就好像连剧本都没有看到一样。

我想做的是在用户单击提交按钮时调用 java/test 函数。我想添加一些类似 if(ajax) 做某事的东西,这就是为什么我在表单数据中有它,但不管它调用什么提交函数 - 我添加了 return false 所以它不会触发提交函数,但它仍然是。

这是我的代码,任何帮助都会很棒。谢谢

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 // 视图文件

<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();

【问题讨论】:

    标签: php javascript jquery ajax codeigniter


    【解决方案1】:

    只是一个想法...您是否尝试过在 JavaScript 中明确说明 Ajax 调用的 URL?可能是它不理解跳转到 php 来回显 URL 路径。

    【讨论】:

    • 我希望是这样,我已经对其进行了硬编码测试,但它不起作用。不过感谢您的建议。
    【解决方案2】:

    这一行:

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

    应该是:

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

    我假设 #submit 不是 input 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;
        }); 
    });
    

    【讨论】:

    • 谢谢你,但这不是我想要的(我的错不是明确的)如果你可以再看一下,我已经编辑了我的帖子。也添加了 return false 位。谢谢
    • @tshauck:请查看我的更新答案。请尝试更新的代码。
    • 嗨,我已经尝试了代码,它仍然会触发提交功能,就像在没有 javascript 的情况下单击一样。
    • @tshauck:那你为什么不把按钮类型改为button而不是submit,因为你想使用ajax提交。
    • @sAc 我不认为这是问题的根源,我似乎无法弄清楚,是 javascript 没有触发。我已经更改了 html 和 java 以反映按钮的想法,但现在我只是被点击而没有任何动作。如果有帮助的话,我正在使用 xampp 在我的本地服务器上运行。
    【解决方案3】:

    更好?

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

    如果您要动态更新 DOM,或者每次页面加载时可以多次调用 onclick 事件,则使用 live() 会更安全

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

    【讨论】:

    • 嗨,好建议,编辑了我的帖子,使其更符合我的要求。如果能再看一遍就好了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-10-13
    • 2022-01-01
    • 1970-01-01
    • 2013-07-01
    • 2016-04-10
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多