0

私は自分のコードに問題があり、$_POST何が起こっているのかを確認するために自分のコントローラーにあることを示すことができることを知りたいと思っていました:

私のjQueryコードでは、私のajaxCall関数は次の形式で構築されていますn ajaxCall(url, data_array, div_id, callback_fn)

私は正しいデータを表示しましたが、DBに保存されていないため、console.log(data_array);内部で何が起こっているのかを確認することはできますか?callback_fn

すべてのコードがエラーなしで 200 を返したので、この質問に戻りました

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));
    }
4

3 に答える 3

0

ajax リクエストをデバッグする方法を尋ねているようです。ここでできることはたくさんあります。まず、エラーがサーバー側で発生していることが確実な場合は、chrome または firefox で、開発者コンソールのネットワーク タブを確認できます。これにより、ページが行うすべてのリクエストと、渡されるリクエストおよびレスポンス パラメータが一覧表示されます。コントローラー メソッドが php または sql エラーをスローしている場合は、スローされたすべてのエラーを黙らせるように php を設定していない限り、応答として返されます。

これを行うには、php 設定に

ini_set('display_errors', 'On');
error_reporting(E_ALL);
于 2013-06-08T22:32:15.107 に答える