2012-01-06 320 views
-3

我寫了一個JavaScript,它使用Jquery.post從Web應用程序加載網頁。我在iframe中顯示頁面。該網頁顯示在IE中,但不是在Firefox中。我試過使用Firebug,但沒有錯誤,它有一個302 OK筆記。我試圖更改也沒有工作的Jquery源代碼。試過JSON,也沒有工作。它超過3天我正在嘗試解決這個問題。我嘗試了很多方法,但效果並不好。Jquery.post不工作​​在Firefox中

<html> 
    <head> 
    <script  type="text/javascript"src="http://ajax.microsoft.com/ajax/jquery/jquery1.4.2.min.js"> 
    </script> 
    <script type="text/javascript"> 


    function callajax() 
    { 
     var iframe =document.createElement("iframe"); 
     iframe.style.width="100%"; 
     iframe.style.height="100%"; 
     //app.getContentEl().appendChild(iframe); 
     document.body.appendChild(iframe); 
     jQuery.post('http://localhost:9090/simpleapp/formproc1',  {'param':'rajat'},function(html){ 


     var doc =iframe.contentWindow.document; 
     doc.write(html); 
     doc.close(); 
     }); 
     } 



     </script> 
     </head> 

     <body> 
     <p>Start typing a name in the input field below:</p> 
     <span></span> 
     <div id="display"></div> 
     First name: 

     <input type="text" /> 

     <button onclick="callajax()">Click me</button> 
     </body> 
     </html> 

我也會附上post方法,因爲它也可能是一個錯誤的方法。

 doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

// TODO自動生成方法存根

 PrintWriter out = response.getWriter(); 

     String par = request.getParameter("param"); 

     System.out.print("Hiii this is inside POST method"); 

     //out.println("<data><param>"+par+"</param></data>"); 

     //out.println(par); 

     //out.flush(); 

     //System.out.print(par); 

     response.sendRedirect("first.jsp"); 

     // out.println("{\"redirect\":\"first.jsp\"}"); 

     } 
+0

嘗試把警報和檢查方法按鈕點擊後調用。 – 2012-01-06 06:11:23

+0

描述它如何「不起作用」。它是否創建iframe? iframe是否完全填充?你有沒有嘗試在firebug中手動調用jQuery.post函數? – codersarepeople 2012-01-06 06:12:38

+0

非常感謝您的迅速響應。 Firebug沒有顯示任何錯誤。但是響應爲空。請求成功通過。並且創建了iframe,但網頁未填充到iframe中。現在你能幫我嗎 – user1132583 2012-01-06 06:37:52

回答

1

這是因爲Same origin policy的。你不能使用ajax來調用外部網站。如果你真的想使用,你必須使用JSONP。或者你可以使用serverside代理。意味着,在服務器端調用外部站點,並對該web服務執行ajax調用。

看到我的回答, $.ajax call working fine in IE8 and Doesn't work in firefox and chrome browsers

+0

謝謝你的回答。但是如果使用JSONP,如果POSt方法響應是網頁會發生什麼。網頁是否會顯示在iframe中?我的意思是如果網頁可以作爲參數傳遞迴調函數。請在此點亮一下。 – user1132583 2012-01-06 09:08:30