1

私がやりたいことは、基本的に div と sub div のコンテンツを 3 秒ごとに取得することです。ajaxを使用してデータをコントローラーに送信しています。しかし、私は得ています

$.ajax is not a function
http://localhost/index/editor
Line 25

これは私が使用しているコードです。

<script type="text/javascript">
    window.setInterval(getAjax, 3000);

    function getAjax() {
        $.ajax({
            type: "POST",
            url: 'localhost/index',
            data: "some-data"     
        });
    }

</script>

1) 私は何か間違ったことをしている

2) Zend コントローラーでデータを受信する方法

4

2 に答える 2

1

jQuery がページに組み込まれると、$.ajax() 関数を使用できるようになります。その後、コントローラーで $_POST 変数のデータにアクセスできます。簡単にするために、通常は JSON オブジェクトを使用してコントローラーにデータを送信します。

    <script type="text/javascript">
        window.setInterval(getAjax, 3000);

        var data = {};
        data['field1'] = 'value1';
        data['field2'] = 'value2';
        function getAjax() {
            $.ajax({
                type: "POST",
                url: 'localhost/index',
                data: data    
            });
        }

    </script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript">

コントローラーでは、_getParam を使用して値を見つけることができます。

public function ajaxAction() {
    //Disable the view (if this is an AJAX call)
    if($this->getRequest()->isXmlHttpRequest()) {
        $this->_helper->layout()->disableLayout();
        $this->_helper->viewRenderer->setNoRender();
    }

    //Get posted data
    $field1 = $this->_getParam('field1');
    $field2 = $this->_getParam('field2');

    if($field1=='value1') {
        $jsonResp['isValid'] = 1;
        $jsonResp['gotValue'] = $field2;
    }
    header('Content-type: application/json');
    echo Zend_Json::encode($json);
}

編集:ああ、忘れていました。おそらく、jQuery コードからコントローラーによって送信された応答を確認する必要があります。次の方法でそれを達成できます

$.ajax({
//...
success: function(jsonResp) {
    if(jsonResp['isValid']) alert(jsonResp['gotValue']);
}
});
于 2012-07-11T15:38:14.103 に答える
0

$.ajaxjQueryによって定義されます。この関数を呼び出す前に、これを含める必要があります。

于 2012-07-11T15:17:26.283 に答える