2013-01-17 83 views
2

我寫了一個javascript來將數據發佈到服務器。這似乎正在工作,但我無法捕捉iframe中的服務器響應。我想在iframe或數據流中捕獲服務器響應,而不轉發到其他頁面或刷新,但我會解決停止頁面被轉發或刷新。iframe中的Javascript捕獲服務器響應

我曾嘗試將target="my_frame"添加到按鈕和表單屬性,但它似乎不工作。

我的代碼,我稍微修改我的代碼展示了:

<html> 
    <head> 

    <title>post</title> 

    </head> 
    <body> 

<script language="javascript"> 

    var myDictionary = []; 
    myDictionary["username"] = "stackoverflow"; 
    myDictionary["password"] = "mypassword"; 


function post(dictionary, url, method) { 
    method = method || "post"; 

    var form = document.createElement("form"); 
    form.setAttribute("method", method); 
    form.setAttribute("action", url); 

    for (key in dictionary) { 
     var hiddenField = document.createElement("input"); 
     hiddenField.setAttribute("type", "hidden"); 
     hiddenField.setAttribute("name", key); 
     hiddenField.setAttribute("value", dictionary[key]); 
     form.appendChild(hiddenField); 
    } 

    document.body.appendChild(form); 
    form.submit(); 
} 
</script> 

<input type="button" target="my_frame" value="Submit" onclick="javascript:post(myDictionary, 'http://www.website.com/register/registernow');" /> 

    <iframe name="my_frame" src=""> 

    </body> 
</html> 

感謝您的閱讀和所有答覆。

+0

附加目標=「」的形式和id =「」來的IFRAME,表單提交之後就可以趕上»負載« iframe的事件 – philipp

+0

我向iframe和form.setAttribute('target','my_Frame')添加了id =「my_Frame」。現在,服務器響應會在新選項卡中打開。我也嘗試添加target =「my_Frame」到按鈕,但它什麼也沒做。 –

+0

使小提琴... – philipp

回答

1

你在找什麼是一個Ajax POST。

您不需要創建表單並提交它,而是需要XMLHttpRequest,或者如果您使用jQuery,則可以使用$ .post或$ .ajax。

參見例如http://blog.mgechev.com/2011/07/21/ajax-jquery-beginners/

+0

我使用唯一的方法,我可以去工作。 –

+0

如果我理解你的問題 - 那麼你做錯了...... ORM提交不會給你的服務器響應,並會觸發頁面重定向。你希望Ajax在沒有重定向的情況下在javascript中獲得服務器響應。我真的建議jquery去做,但看起來你並沒有使用jquery,所以我鏈接的文章顯示了jquery和非jquery的方式。 – Iftah