0

ajax を使用して、ページの読み込み時にコンテンツを表示するのに問題があります。ajax は、それぞれのコントローラーで正しいアクションを呼び出しています。データベースを更新するアクション コードの最初の部分は正常に動作しています。しかし、renderPartial を呼び出している部分が機能していません。

**編集***

さて、ここにコントローラーのアクションがあります::

public function actionUpdateProductData() {
    Yii::import('application.components.DataScraper.*');
    require_once('GetProductData.php');

    $productRealTime = RealTime::model()->findAll();



    if (count($productRealTime) === 0) {

        $symbolData = new GetProductData();
        $symbolData->getAmazonProductData();
    } else {


        echo CJSON::encode( array(
            'status' => 'OK',
            'div' => $this->renderPartial('_productDataGrid', array(
                            'model' => $productRealTime), 
                            true, true ),
        ));

    }
}

if 部分は正常に動作しています。しかし、他の部分は機能していません。

ビュー index.php は次のとおりです::

    <?php
        /*
         * Include the ajax Stock update script
         * 
         */
        $baseUrl = Yii::app()->baseUrl;
        $cs = Yii::app()->getClientScript();
        $cs->registerScriptFile($baseUrl . '/js/ajaxProductDataUpdate.js');
?>

<div>
    <hr>
    <ul class="breadcrumb">
        <li>
            <a href="#">Home</a> <span class="divider">/</span>
        </li>
        <li>
            <a href="#">Product Info</a>
        </li>
    </ul>
    <hr>
</div>



<div class="span-10">

    <div id="section2">

    </div>

</div>

これが部分ビュー ファイル _productDataGrid.php です。

 <?php

$this->widget('bootstrap.widgets.TbGridView', array(
    'id' => 'real-time-grid',
    'dataProvider' => $model->search(),
    'filter' => $model,
    'columns' => array(
        'id',
        'name',
        'category',
        'price'
        'rating'

        array(
            'class' => 'bootstrap.widgets.TbButtonColumn',
        ),
    ),
));
?>

そして、これがajaxリクエストを行っているjQueryファイルです

    var productParameters = {
    ajaxUpdate: function() {
        $.ajax({
            url: "/ProductAnalysis/index.php/realTime/updateProductData",
            type: "GET",
            dataType:"json",
            error: function(xhr, tStatus, e) {
                if (!xhr) {
                    alert(" We have an error ");
                    alert(tStatus + "   " + e.message);
                } else {
                    alert("else: " + e.message); // the great unknown
                }
            },
            success: function(data) {
                $.fn.yiiGridView.update('real-time-grid', {
                    data: $(this).serialize()
                });
            }
        });
    }
};

$(document).ready(function() {
    productParameters.ajaxUpdate();

});

ページ /realTime/index.php をロードすると、次のようなエラーが表示されます

    else:
undefined

明らかに ajax 呼び出しが失敗していますが、どうすれば修正できるかわかりません。また、Firebug では、コントローラーの echo date() 関数は機能していますが、Gridview は機能していません。

これを解決する方法についてのヘルプを提供してください。どこが間違っているのか教えてください。私はこれについて前進することができないようです。

前もって感謝します、

マックス

4

2 に答える 2

0

実際のJSONactionUpdateStockData()コンテンツがエンコードされる前の日付をエコーし​​ています。その結果、正しい JSON を送信していないため、XHR は失敗します。

行を削除するecho date ...と、問題ないはずです。そして、あなたがちょうどそれをしているので、場合の応答を追加する必要がありcount(RealTime::model()->findAll()) === 0ます。

于 2013-10-20T18:11:06.990 に答える