簡體   English   中英

卡在Codeigniter和jQuery.ajax中

[英]Stuck with Codeigniter and jQuery.ajax

所以...多虧了stackoverflow用戶之一,我試圖在我現有的Codeigniter應用程序中實現這一精美功能...

在我看來,我有:

<script type="text/javascript">
$(function() {
    $(".submit_op").click(function() {
        var dataString = $("#op_form").serialize();
        var url = "<?php echo site_url('submit/insert_data'); ?>";
        $.ajax({
            type: "POST",
            url: url+"/"+dataString,
            data: dataString,
            cache: false,
            success: function(html){
                //$("div#op").prepend(html); //PROBLEM HERE???
                $("div#op").prepend("<div>TEST</div>");
                $("div#op div:first").fadeIn("slow");
                //$("#debug").append("<font color=green><b>OK!</b></font> : " + dataString + "<br/>");
            },
            error: function(html){
                //$("#debug").append("<font color=red><b>ER!</b></font> : " + dataString + "<br/>");
            }
        });
        return false;
    });
});
</script>

<div id="debug"></div>

<?php
//here goes some data from db... newly added div should go in top of other divs
foreach ($some_data_sent_from_controller as $var) {
    echo "<div id=\"op\">";
    echo "<table width=\"100%\" border=\"0\">";
    //showing data
    echo "</table>";
    echo "</div>";
}

echo "<form action=\"#\" id=\"op_form\">";
//some clickable stuff...
echo br().form_submit('submit', 'OK', 'class="submit_op"');
echo "</form>";

在我的控制器中,我有一個處理從View發送的數據的函數:

function insert_data($input) {
    $this->load->model('blah_model');
    //processing serialized data and sending it to corresponding tables via Model
    $this->blah_model->add_to_table($some_data);
    $this->blah_model->add_to_another_table($some_other_data);

}

而且該模型不是笨拙的:)

function add_to_table($data){
            //processing data...
    $insert = $this->db->insert('my_table', array('array_which_contains_actual_data'));
    if ($insert == TRUE) {
        return TRUE;
    } else {
        return FALSE;
    }
}
//etc.

據我所知,我的問題不在我的MVC模式中,因為每次我提交表單時,數據都正確地插入了關系數據庫中所有可能的表中...但是新添加的行不會顯示除非我刷新頁面。

我認為我在jQuery.ajax行中做錯了什么...如果我在此行中運行腳本$("div#op").prepend("<div>TEST</div>"); 當我提交表單時,我得到了理想的結果-每次我提交時,文本TEST顯示在頁面頂部...但是,如果我將該行更改為$("div#op").prepend(html); 刷新之前沒有任何顯示...

我在這里做錯了什么?

非常感謝您的幫助!

哇,這可能對我來說很la腳。但是最后我發現我必須在控制器中回顯我的結果,而不是返回它。所以當我將控制器中的函數更改為

function insert_data($input) {
    $str = "<div>KILLROY WAS HERE!</div>";
    echo $str; // <----- !!!!!!
}

我可以在頁面上看到一條消息...

現在到其他事情...感謝您的頭腦風暴:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM