繁体   English   中英

$ this - > _ request-> isXmlHttpRequest()不工作

[英]$this->_request->isXmlHttpRequest() Not Working

我正在研究对我来说不熟悉的ZEND框架,AJAX的情况也是如此。 我尝试了很多例子,但没有它们起作用。

请告诉我这个代码我错了。

home.phtml

<select name="year" onchange="saveChanges(this);">
                                    <option value="najam">Najam</option>
                                    <option value="Ali">Ali</option>
                                    <option value="Hassan">Hassan</option>
                                    <option value="Hassam">Hassam</option>

                                </select>
                                <script type="text/javascript">
                                    function saveChanges(object){   
    $.ajax({
        method :'POST',
        url: 'home',
        data: object.value,
        cache: false,
        error: function(e){
            alert(e);
            console.log("error" + e);
        },
        success: function(response){
            // A response to say if it's updated or not
            alert("Success" + object.value);
            console.log("Success");
        }
    });   
}
                                </script>

HomeAction

if($this->_request->isXmlHttpRequest()){
//do this
}
else {
//do this
// It always in the else Part.

}

虽然它在控制台上打印成功消息,但也在javascript警告消息上打印。

如果这段代码出错,请帮帮我

在Zend Framework中,您可以为操作添加ContextSwitch 基于上下文,操作将在相关模板中呈现。

例如

    public function init()
    {
        $contextSwitch = $this->_helper->getHelper('contextSwitch');
        $contextSwitch->addActionContext('list', 'xml')
                      ->initContext();
    }

在你的情况下

    $contextSwitch->addActionContext('home', 'ajax')

请参见http://framework.zend.com/manual/1.8/en/zend.controller.actionhelpers.html

编辑:这是针对ZF1的,如果您使用的是ZF2,您可能需要View Strategy http://framework.zend.com/manual/2.0/en/modules/zend.view.quick-start.html#creating -and-注册-交替渲染-响应的策略

method :'POST'

type: "POST"

我总是使用$this->_request->isXmlHttpRequest()来检测ajax请求并始终工作。

对不起,我说英语不太好

更新:

控制器:

final class IndexController extends Zend_Controller_Action
{
    final public function indexAction(){
        if($this->_request->isXmlHttpRequest()){
            header('Content-type: application/json;charset=UTF-8');
            exit(json_encode(($this->_request->getPost())));
        }
    }      
}

视图:

                            <select id="year" name="year">
                                <option value="najam">Najam</option>
                                <option value="Ali">Ali</option>
                                <option value="Hassan">Hassan</option>
                                <option value="Hassam">Hassam</option>
                            </select>
                            <script type="text/javascript">
                                $(function(){
                                   $("#year").change(function(){
                                       var _this = $(this);
                                        $.ajax({
                                            type :'POST',
                                            url: "", // empty string means current URL
                                            data: {year: _this.attr("value")},
                                            dataType: 'json',
                                            cache: false,
                                            error: function(e){
                                                console.log(e);
                                            },
                                            success: function(response){
                                                console.log(response);
                                            }
                                        });   
                                    });
                                });
                            </script>

这是源代码:

http://www.mediafire.com/?hvv4830macfl0wm

希望有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM