2010-07-01 45 views
0

如何从cakephp中将表单提交到iframe中的结果?从cakephp中将表单提交到iframe中返回结果

另一个问题是,如何在控制器动作的循环中每次迭代时将一些消息返回给iframe。可以说它迭代了10次,所以在每次迭代之后,它会立即显示消息,如“迭代1完成”等等...在iframe中... ...

回答

-1

我认为你需要看一个AJAX解决这个问题。您可以使用Javascript将数据戳入iframe,但视图和控制器之间的迭代交互最好使用AJAX连接完成。

这是我采取的一种快速和肮脏的方法。 在控制器动作结束:

App::import('Helper', 'Javascript'); 
    $javascript = new JavascriptHelper(); 

    echo($javascript->object($returnVals)); // allows passing of array 
    exit(1); 

在视图中,您需要捕获返回的值,并使用解析JSON.parse:

<snip--> 
     if(xmlHttp) 
     { 
      xmlHttp.open("POST",actionURL,true); 
      xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
      xmlHttp.onreadystatechange = function() 
      { 
     if (xmlHttp.readyState == 4 && xmlHttp.status == 200) 
     { 
      doAction(xmlHttp.responseText,zone); 
     } 
<--snip> 
    function doAction(props,zone) 
    { 
     var newProps = JSON.parse(props);//needs to be parsed into a JS object. 
     //other stuff here 
    } 
+0

谢谢LEO ......我知道我将需要使用ajax .......但我只想知道,怎么做,让我说我提交一个表单,并且它运行一个控制器动作,所以现在,我如何发送一个$结果到从这个控制器动作的iframe,以及如何将这个$结果读取到iframe ...... – texpert 2010-07-02 14:16:50

+0

不知道你想要做什么的细节,这很难说。我猜如果你必须使用iframe,那么你需要保持一个句柄,并使用javascript将适当的信息戳入它。尽管如此,我不禁想到你为自己制造困难。 – Leo 2010-07-05 15:29:54

+0

我编辑了我的答案以包含一些代码片段。 – Leo 2010-07-05 16:09:18