2014-01-05 83 views
2

我試圖使用jQuery後ID在新窗口:jQuery的追加的innerHTML通過負載

  1. 打開一個新窗口/選項卡(同一域,不同的頁面)
  2. 然後添加文本到文本盒(id = "BUpdates_SQL_Statement"
  3. 然後單擊此按鈕:<input type="submit" value="Apply Changes" name="BUpdates_Submit" id="BUpdates_Submit">
  4. 然後關閉窗口

這裏是在T的onclick元素他開始頁面(我們稱之爲www.mydomain.com/firstpage):

<li id="MainNav_Update"><span class="MainMenuText" onclick="runUpdateWindow();">Update</span></li>

,這裏是我想在新的窗口中編輯的區(我們稱之爲www.mydomain.com視爲/ secondpage)

<textarea id="BUpdates_SQL_Statement"></textarea> 

<input type="submit" value="Apply Changes" id="BUpdates_Submit"> 
<a onclick="v$('BUpdates_Submit').click();return false;" href="javascript:void(0);"><span>Apply Changes</span></a> 

側面說明:v$('BUpdates_Submit').click();return false;"是有沒有關係我想要在這裏做的另外一個外部JS文件。 ,這裏是我的jQuery:

function runUpdateWindow() { 
     var updateWindow = window.open("www.mydomain.com/secondpage", "blank"); 
    } 
     var updateSQL = 'UPDATE TABLE ...'; 

     $(updateWindow).on("load", function(){ 
     $("BUpdates_SQL_Statement", updateWindow.document).append(updateSQL); 

$('BUpdates_Submit').trigger('click'); 
     }); 

     updateWindow.close(); 

www.mydomain.com/secondpage在新標籤中打開,但BUpdates_SQL_Statement應該是:

<textarea id="BUpdates_SQL_Statement"> 
UPDATE TABLE... 
</textarea> 

,但它仍然是空白。

我會真誠地感謝任何意見。提前致謝!

+0

相關:http://stackoverflow.com/questions/4167965/how-do-you-communicate-between-2-browser-tabs-windows和http://stackoverflow.com/questions/14735706/is-it - 基於事件的通信 - 瀏覽器窗口間通信 –

+0

@icktoofay我所包含的代碼突破了我的能力範圍,因爲我是一個完整的noob。原諒諺語中的「愚蠢問題」,但是,我究竟會如何使用AJAX? – KateTheGreat

+0

@KateTheGreat:我已經添加了一個應該說明如何使用它的答案,假設您要提交的表單不是很複雜。 – icktoofay

回答

1

據我所知,你要做的是自動填寫和提交表單,並選擇了一個看似相當直接的方式。不管這種方法是否有效,可能有一種更簡單的方法。

想想打開其他頁面時發生了什麼,填寫表格,然後按提交。如果這是一個沒有JavaScript干擾的普通HTML表單,那麼您可能會收到POST請求。如果我有這種形式,說:

<form action="run-sql" method="post"> 
    <textarea name="sql"></textarea> 
    <input type="submit" value="Run query"> 
</form> 

當我和一些SQL提交它,瀏覽器將發出一個POST請求run-sql一個參數,sql。燒掉POST的請求對於JavaScript來說相對來說比較簡單,至少與自動化另一個網頁相比。燒掉來自JavaScript的HTTP請求通常稱爲AJAX,幸運的是,jQuery使its $.post function更容易。

那麼如何使用它?在這種具體的例子,它是如此簡單:

var mySQL = "select * from employees"; // e.g. 
jQuery.post("run-sql", {sql: mySQL}, function() { 
    alert("Success!"); 
}); 

現在,一些形式不是因爲這很簡單,但它是值得一試,看看你的形式。

1

就跟着做一個iframe,而不是一個新的窗口:

function runUpdateWindow() { 
    var frame = document.createElement('iframe'); 

     frame.src = "www.mydomain.com/secondpage"; 

    document.body.appendChild(frame); 

    var frameWindow = frame.contentWindow 

    var updateSQL = 'UPDATE TABLE...'; 

    frameWindow.onload = function(){ 
     var textarea = frameWindow.document.getElementById("BUpdates_SQL_Statement"); 
     var button = frameWindow.document.getElementById("BUpdates_Submit"); 

     textarea.value = updateSQL; 

frameWindow.v$('BUpdates_Submit').click(); 
    }; 

} 

巨大謝謝 Dagg Nabbit幫助我弄清楚了這一點!