0

私はjqueryとzendを初めて使用し、$。getJSONを使用してフロントエンドとバックエンドの間で通信しようとしています。

これが私がしたことです:

/mycontroller/index.phtmlのヘッダータグに、jsコードがあります。

 <script src="/js/jquery.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
    //  alert("js");
        $("#loadQuestions").submit(function(){
            var formData = $(this).serialize();
            console.log(formData);
            $.getJSON('http://xxx.com/mycontroller/process', formData, processData).error('ouch');
            function processData(data){
                //alert(data);
                console.log(data);
            }
            return false;
        }); // end submit
    }); // end ready
</script>

bodyタグには、次の簡単な形式があります。

<form action="http://xxx.com/mycontroller/process" method="post" id="loadQuestions">
    <input type="hidden" name="page" value="100">
    <input type="submit" name="button" id="button" value="Submit" >
</form>

processAction()には、単純なコードがあります。

$arr = array('pageNumber'=>200);
    echo json_encode($arr);
    exit;

私が持っていると思うのは、送信を押した後、フォームデータを収集する必要があります(そして、Chromeコンソールで見ることができます)が、formDataを見た後、コンソールに何も表示されません(データを見る必要があります)サーバーから渡されましたが、私は渡されませんでした)。

誰かがそれを修正するために私が何をすべきか考えていますか?

4

2 に答える 2

0

コントローラから印刷しようとしているため、問題が発生していると思います。Zendでは、ビューファイルでそれを行う必要があります。

したがって...processActionでは、次のようなことを行う必要があります...

$this->view->data = $arr;

次に、ビューファイルprocess.phtmlで必要なもの...

if($this->data)
    echo json_encode($this->data);
于 2012-08-07T00:20:10.063 に答える
0

コントローラーで AjaxContext アクション ヘルパーを使用できます。

このように設定しました。

    public function preDispatch()
    {
        $this->_ajaxContentSwitch = $this->_helper->getHelper('AjaxContext');
        $this->_ajaxContentSwitch->addActionContext('process', 'json')
                                 ->initContext();
   }

そしてあなたのプロセスアクションで。

public function processAction()
{
    if ($this->_helper->ajaxContext()->getCurrentContext() == 'json') { 
                $this->view->array = array('pageNumber'=>200);
    } else {
        // Not called via ajax do redirect or something here
    }
}

また、これを機能させるには、JQuery スクリプトの URL を「http://xxx.com/mycontroller/process/format/json」にする必要があります。

上記の processAction は、配列を含む array という名前の json 文字列を返します。

これが役立つことを願っています。

ギャリー

于 2012-08-07T09:41:41.410 に答える