0

Zend Ajax に問題があります。それは私のjsコードです:

function deleteNewsCategory(cId) {
var conf = confirm("Are you sure you want to delete the item?");

if(conf) {
    $.ajax({
        dataType: 'json',
        url: '/ajax/deletenewscategory',
        type: 'POST',
        data: {
            cId : cId
        },

        success: function (response) {
            alert(response);
        }
    });
}

}

それが私の AjaxController です:

public function init() {
    $this->_helper->ajaxContext->addActionContext('deletenewscategory', 'json')
            ->initContext();
}

public function deletenewscategoryAction() {
    if ($this->getRequest()->isPost()) {
        echo $this->_request->getPost('cId');
    }
}

送信ボタンに deleteNewsCategory 関数を追加しましたが、このボタンをクリックして確認メッセージが表示され、[OK] をクリックしても何も表示されませんか?

4

1 に答える 1

1

送信を妨げている Javascript エラーがあるか、応答に JSON データが含まれていないためにハンドラーが呼び出されていません。

ajax.phtmlAjax コンテキストを使用しているため、接尾辞付きのビュー スクリプトはありますか?

exit;echo ステートメントの後に追加するdeletenewscategoryActionと、アラートが表示されるかどうかを確認してください。

次に、Firebug または Firefox の livehttpheaders を使用するか、Wireshark を使用して HTTP 要求と応答を盗聴し、返されるデータを確認します。

編集:404エラーが発生するため、次を試してください:

url: '<?php echo $this->url(array('controller' => 'ajax',
                                  'action'     => 'deletenewscategory'),
                            null, true) ?>',

ヘルパーを使用するurl()と、ルートとベース パスに従って URL が作成されます。

アラートが表示されない理由は、404 に HTML が含まれており、有効な JSON ではなく、jQuery が成功ハンドラーを呼び出していないためです。

于 2012-08-12T18:48:45.950 に答える