使用Codeigniter AJAX发布问题的jQuery

时间:2011-07-24 21:25:30

标签: php jquery ajax codeigniter frameworks

我一直试图解决这个问题,但它似乎比我初想的要难。但是,我正在尝试做的是发一个ajax post请求,但是当我发送它时POST似乎是空的。

我的HTML文件

    <div id="statusUpdate">
        <?php echo form_open(base_url() . 'profile/statusUpdate', array('id' => 'statusUpdateForm', 'name' => 'statusUpdateForm')); ?>
            <input type="text" value="Hva tenker du på?" name="profileUpdate" id="profileUpdate" onfocus="if(this.value == 'Hva tenker du på?')this.value=''" onblur="if(this.value == '')this.value='Hva tenker du på?'" />
            <input type="submit" value="" name="profileUpdateButton" id="profileUpdateButton" />
        <?php echo form_close(); ?>
    </div>

我的Javascript

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

        $.ajax({ // Starter Ajax Call

            method: "POST", 
            url: baseurl + 'profile/statusUpdate', 
            data: $('#statusUpdateForm').serialize(),
            success: function(data) { 
                alert(data);
            }

        });

        return false;

    });

我的PHP(我在控制器中的一些方法)

    // Check if the input is a ajax request
    if($this->input->is_ajax_request()) {
        echo $_POST['profileUpdate'];
    }

注意,当我在控制器中放置echo“Hello World”等时,我会从javascript的警告框中获得“Hello World”。

我还尝试了$ _POST上的var_dump并返回 array(0){} 当我尝试输出特定的$ _POST ['profileUpdate']变量时,我收到错误像这样,

enter image description here

我也从JS的seralize函数做了警告,这就是我得到的,

enter image description here

有谁知道我如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

尝试将method更改为type

我猜这个脚本正在执行GET请求,这是使用ajax()而不是POST请求时的默认设置。像这样:

$.ajax({ // Starter Ajax Call

        // "method" isn't an option of $.ajax
        // method: "POST", 
        type: "POST", 

        url: baseurl + 'profile/statusUpdate', 
        data: $('#statusUpdateForm').serialize(),
        success: function(data) { 
            alert(data);
        }

    });

答案 1 :(得分:0)

尝试以下代码

在视图中添加以下表单

<?php echo form_open('welcome/CreateStudentsAjax'); ?>

    <label for="roll">Student Roll Number</label>
    <input type="text" id="txtRoll" value="" name="roll"/>

    <label for="Name">Students Name</label>
    <input type="text" id="txtName" value="" name="name"/>

    <label for="Phone">Phone Number</label>
    <input type="text" id="txtPhone" value="" name="phone"/>

    <input type="submit" name="submit" value="Insert New Students"  />

    <?php echo '</form>'; ?>

JQuery Part位于

之下

            $(document).ready(function(){

                $('form').submit(function(){
                    //alert('ok');      
                    $.ajax({
                        url:this.action,
                        **type:this.method,**
                        data:$(this).serialize(),
                        success:function(data){
                            var obj = $.parseJSON(data);

                            if(obj['roll']!=null)
                            {                               
                                $('#message').text("");
                                $('#message').html(obj['roll']);
                                $('#message').append(obj['name']);
                                $('#message').append(obj['phone']);
                            }
                            else
                            {                               
                                $('#message').text("");
                                $('#message').html(obj); 
                            }

                        },
                        erro:function(){
                            alert("Please Try Again");
                        }                        
                    });
                    return false;
                });                        
            });

        </script>