2010-07-01 57 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