Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Ajax/Javascript在Zend中重定向的Post参数_Javascript_Jquery_Ajax_Zend Framework_Parameter Passing - Fatal编程技术网

使用Ajax/Javascript在Zend中重定向的Post参数

使用Ajax/Javascript在Zend中重定向的Post参数,javascript,jquery,ajax,zend-framework,parameter-passing,Javascript,Jquery,Ajax,Zend Framework,Parameter Passing,好的,情况是这样的:我在Zend上使用Ajax,这样当我从日历中选择日期时,它会将我重定向到一个带有POST参数的控制器(实际上是一样的,所以有点像重新加载页面),这样我就可以用新的日期显示视图 问题是:当我选择一个新日期时,它会工作,将我重定向到控制器,并且视图页面会重新加载,但没有参数 这是我的index.phtml: <script> $(document).ready(function() { function update() { var ndat

好的,情况是这样的:我在Zend上使用Ajax,这样当我从日历中选择日期时,它会将我重定向到一个带有POST参数的控制器(实际上是一样的,所以有点像重新加载页面),这样我就可以用新的日期显示视图

问题是:当我选择一个新日期时,它会工作,将我重定向到控制器,并且视图页面会重新加载,但没有参数

这是我的index.phtml:

<script>
$(document).ready(function() {

    function update() {
        var ndate = document.getElementById("new_date").value;
        alert(ndate);
        $.ajax({
            type: 'POST',
            url: '/model/control/index',
            data: ndate,
            dataType : 'html',
            success: function( data ) {
                alert('OK');
                window.location.replace('/model/control/index');                  
            }
        });
    }
}        
</script>
因此,我得到了第一个带有ndate值(日期)的警报。 我得到了第二个警报(OK),这意味着它成功了。 页面重新加载,但我仍然得到一个“KO”。 因此,我仍然无法在控制器中获取“ndate”值

我的问题:如何使用POST参数重新加载页面/重定向到控制器? 如何将我在警报中显示的“ndate”值作为POST参数传递? 提前谢谢,请帮帮我

编辑

这里有一个变量转储,使用“window.location.replace('relancecab');”将$this->getRequest()->getParams()和getPost()转储到这里

现在是“window.location.replace('relancecab?ndate='+ndate);”

正如你所看到的那样,GET工作,但不是用POST

你可以做到

$.ajax({
    type: 'POST',
    url: '/model/control/index',
    data: "ndate=" + ndate,
    dataType : 'html',
    success: function( data ) {
        alert('OK');
        window.location.replace('/model/control/index?ndate=' + ndate);                  
    }
});
并通过从url获取参数在控制器端处理它

编辑:

您还可以将发布的变量分配给视图,如

if($this->getRequest()->isPost() ) {
    echo 'OK';
     $ndate = $this->getRequest()->getPost('ndate', null);
     $this->view->ndate = $ndate;  
} else {
    echo 'KO';  
}

您可以在重新加载的视图中使用新日期

您可以生成一个
表单
并提交它:

var url = '/model/control/index';

$.ajax({
    type: 'POST',
    url: url,
    data: "ndate=" + ndate,
    dataType : 'json',
    success: function( data ) {
        var form = $('<form></form>').attr('method', 'POST').attr('method', url);
        $.each( data , function( key, value ) {
            var input = $('<input></input>');
            input.attr('type', 'hidden');   
            input.attr('name', key);
            input.attr('value', value);
            form.append(input);
        });
        $(document.body).append(form);
        form.submit();                
    }
});
var url='/model/control/index';
$.ajax({
键入:“POST”,
url:url,
数据:“ndate=“+ndate,
数据类型:“json”,
成功:功能(数据){
var form=$('').attr('method','POST').attr('method',url);
$。每个(数据、函数(键、值){
变量输入=$('');
input.attr('type','hidden');
input.attr('name',key);
input.attr('value',value);
表单。追加(输入);
});
$(document.body).append(表单);
表单提交();
}
});

您必须对PHP返回进行
json\u编码。
那么为什么要执行POST请求呢?而且不是一个GETHi,谢谢你的代码,它工作得很好,但是有什么方法可以使用POST作为参数吗?只是我被要求使用POST。在POST请求中,参数不能在url中看到,但您可以将url更新到ajaxI中的
'/model/control/index?ndate='+ndate
,我不希望在url中看到参数。你的代码非常适合获取参数,你知道如何处理POST吗?因为即使我在ajax中使用type:'POST',我仍然无法在控制器中接收任何POST参数,并且仍然得到'KO'…您想在成功回调中发布吗?如果您确定您的请求,请尝试打印
$this->getRequest()->getMethod()
甚至
$this->getRequest()
看看你有什么。编辑第一篇文章回答你的问题。GET工作,但不是POST。提前感谢…因为当您执行
window.location.replace('/model/control/index')
时,您不会执行
POST
请求!!我不明白您想要实现什么,为什么需要ajax调用和重定向?在ajax请求成功时,替换
alert('OK')通过
警报('ajax结果:'+数据)
并查看控制台中的内容。我试图实现的是将Javascript参数作为POST传递到同一页面以更改日期,从而使用新日期重新加载页面。带有警报(“ajax结果:”+数据);它会返回一个HTML页面(我正在尝试重新加载的页面)。我希望它能像GET一样工作(它正在工作),但不会看到URL中的参数。
$.ajax({
    type: 'POST',
    url: '/model/control/index',
    data: "ndate=" + ndate,
    dataType : 'html',
    success: function( data ) {
        alert('OK');
        window.location.replace('/model/control/index?ndate=' + ndate);                  
    }
});
if($this->getRequest()->isPost() ) {
    echo 'OK';
     $ndate = $this->getRequest()->getPost('ndate', null);
     $this->view->ndate = $ndate;  
} else {
    echo 'KO';  
}
var url = '/model/control/index';

$.ajax({
    type: 'POST',
    url: url,
    data: "ndate=" + ndate,
    dataType : 'json',
    success: function( data ) {
        var form = $('<form></form>').attr('method', 'POST').attr('method', url);
        $.each( data , function( key, value ) {
            var input = $('<input></input>');
            input.attr('type', 'hidden');   
            input.attr('name', key);
            input.attr('value', value);
            form.append(input);
        });
        $(document.body).append(form);
        form.submit();                
    }
});