显示回调函数中$ _POST内发生的事情

时间:2013-06-08 22:21:32

标签: php jquery ajax codeigniter callback

我的代码存在问题,我想知道我可以在我的控制器中显示我的$_POST,看看发生了什么:

在我的jQuery代码中,我的ajaxCall函数采用以下格式构建n ajaxCall(url, data_array, div_id, callback_fn)

我已经完成了console.log(data_array);并显示了正确的数据但是在那里看到callback_fn中发生了什么,因为它没有保存到数据库中?

由于我的所有代码都返回了200但没有错误,我已经回到question

Ajax代码:

$('body').on("click", "#product_save_youtube_btn", function (e) {
        e.preventDefault();
        var box = $("#product_youtube");
        var id = box.data("id"); 

        var url = box.data("url");              
        var data_array = { 
                id : id, 
                new_id : box.val(), 
            };

            //console.log(data_array);

        if($.trim(box.val()) != "")
        {
            ajaxCall(url, data_array, null, "update_product_youtube");

            alert("Your You Tube ID Has Been Changed");
        }           

    });

AjaxCall的:

function ajaxCall(url, data_array, div_id, callback_fn) {

        return $.ajax({
            type:'POST',
            url:url,
            beforeSend: function(){
                 $("#" + div_id).html("<img src='http://www.domain.co.nz/files/large/ajax-loader.gif' alt='Loading..' title='Loading..'/>");
            },
            data:data_array,
            complete:function (data) {
               $("#" + div_id).html(data.responseText);

               if(callback_fn != null)
               {
                   eval(callback_fn + '()');
               }
            }
        });
    }

PHP代码 - Callback_fn:

public function ajax_update_product_youtube()
        {
            if($_POST)
            {
                $id = intval($_POST['id']);
                $new_id = mysqli_real_escpe_string(trim($_POST['new_id']));

                if(empty($id))
                {
                    $this->Ps_products_model->update_product_youtube($id, $new_id);
                }                           
            }
        }

型号:

public function update_product_youtube($table, $id, $new_id)
    {
        $table = $this->_table_products;

       $this->db->query("UPDATE {$table} SET youtube = ? WHERE id = ?", array($new_id, $id));
    }

3 个答案:

答案 0 :(得分:1)

如果我理解正确,您正试图查看控制器的响应。 为此,您可以执行以下操作之一:

  1. 使用hurl.it并手动发送参数以查看回复。

  2. 使用chrome dev工具/ firebug。如果是镀铬,你可以按F12 - &gt;控制台 - &gt;右键单击控制台 - &gt;选择log xmlHttpRequests。您的所有ajax请求和响应都将被记录并可查看。

答案 1 :(得分:0)

好像你在问如何调试ajax请求。你可以在这里做很多事情。首先,如果您确定服务器端发生错误,则在chrome或firefox中,您可以检查开发人员控制台中的网络选项卡。这将列出您的页面所做的所有请求以及传递的请求和响应参数。如果控制器方法抛出一个php或sql错误将作为响应返回,除非你设置php来静音所有抛出的错误。

为此,请确保您的php设置

ini_set('display_errors', 'On');
error_reporting(E_ALL);

答案 2 :(得分:-1)

如果您正在寻找快速而肮脏的调试黑客,只需var_dump您希望在控制器/回调函数中看到的任何变量(例如,$_POST)。