[問題] 關於jQuery開新視窗的一個問題

看板Ajax作者 (Kay)時間14年前 (2012/03/21 10:19), 編輯推噓8(8021)
留言29則, 7人參與, 最新討論串1/1
各位好,想請問一個煩惱我的狀況 我先描述環境 網頁A:內有含有checkbox的表格,而jQuery跟js的部分 會將有勾的checkbox內部的value存成陣列按鈕之後將陣列送出 網頁B:收到A傳送的陣列後,根據陣列的值去SQL存取資料,並echo出來 網頁A,B都有使用jQuery 因為我是這一個月內密集學習php+mysql+jquery 所以一開始我還沒碰到jQuery時,我的做法是這樣 A裡面放置一個form,action為B網頁,目標是_blank,使用submit 將勾選的checkbox送出POST陣列 B接收POST陣列,根據接收的值作SQL存取,並echo (B會另開新視窗) 之後接觸到jQuery時 A利用jQuery選擇器選取按鈕click動作,將勾選的checkbox存成陣列 利用$.POST丟給B網頁,並有一塊div區域準備讓B回傳的data顯示結果 B就單純的接收陣列後,存取sql,回傳結果給A (整個動作都在A視窗內搞定,不會另開視窗) 但是現在我需要的結果如下 希望可以利用jQuery將勾選的checnkbox資料送出給B網頁 而且B網頁會開新視窗顯示結果 但我研究了一下,我卡關卡了一個下午,百思不得其解 雖然說用傳統的form submit可以解決掉的東西 但是我需要從jQuery方便去做解法 (網頁裡面牽扯了不少東西就是了) 我昨天嘗試了幾個方案,都失敗 失敗A: click後馬上window.open B網頁,再將陣列$.POST送到B網頁 後來想了想,window.open的B網頁,跟$.POST送出陣列的目標B網頁 這兩個B網頁應該是不同的 = =+ 失敗B: click後window.open空白網頁,之後A網頁以$.POST送出陣列後 收到B網頁回傳的data,並將data塞進去空白網頁 這樣子看起來雖然像一個我所要結果,但是B網頁裡面的js,jQuery語法都失效 Orz 不知道有沒有版友有法能解嗎 >< 解不掉好痛苦呀.. Orz 比便秘還慘.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.15.176

03/21 10:27, , 1F
1.$.POST 後等 callback ,2. callback 回來後呼叫 open
03/21 10:27, 1F

03/21 10:27, , 2F
再把 callback 的資料一併丟進去
03/21 10:27, 2F
感謝回應 我嘗試了這樣子寫,但是沒有成功 $.post("B網頁.php", { chkedbox : chkedbox }, function(data,textStatus) { var popw = window.open(); $(popw.document.body).html(data); }); 我詳細描述網頁的內容好了 是要讓使用者在A網頁選擇想要看到的物品 B網頁是一個含有html的php網頁(裡面也用了一些 jQuery,javascript) 內容大概是,B網頁接收到A給的陣列後,在用jQuery語法將陣列送到sql處理程式 從資料庫取出的資料會回傳給B網頁,塞到ckeditor的textarea裡面 而上面的post寫法,會讓open的網頁裡面雖然看起來會有B網頁的內容 但是js,jQuery語法都沒有成功,所以jQuery也沒有辦法將陣列丟給後面的sql處理程式 囧 PS:將checkbox的value取出存成陣列這點是OK的,這個地方沒有錯誤

03/21 11:00, , 3F
感謝回應
03/21 11:00, 3F

03/21 11:04, , 4F
確認一下,這樣就代表 b 網頁跟 open 的網頁內容一樣
03/21 11:04, 4F

03/21 11:04, , 5F
是這個意思嗎?
03/21 11:04, 5F
是的

03/21 11:04, , 6F
用了jQuery之後,還是可以用舊方法啊..form submit最簡單
03/21 11:04, 6F
我本也是這樣子想,不過在A網頁中 我是在一個已經存在一個submit按鈕的form裡面,再放一個按鈕 而這個form已經有指定的action網頁了,所以我才用jQuery去挑我新增的那個按鈕

03/21 11:07, , 7F
我跟kk的想法一樣,直接用 submit 就好,而且其實B網頁不用
03/21 11:07, 7F

03/21 11:08, , 8F
寫html碼,直接回傳跑php後的結果就好,再讓A網頁拆解
03/21 11:08, 8F

03/21 11:08, , 9F
或用json也可以。之後再把回傳值餵給新開的視窗處理
03/21 11:08, 9F

03/21 11:09, , 10F
而這個新開的網頁本身就寫好 js 就可以
03/21 11:09, 10F
GOT!K兄的說明跟我現在腦中想的解法有點像 而這個解法我可能會碰到幾個問題,我要怎麼將資料塞到一個新開且內含有些js的的視窗 因為那些資料是要放到一個特定的地方裡面,依照我這個月硬k的結果..心有餘而力不足 阿 QQ ..硬k的結果就是腦中能夠找到的解法真是少之又少.. Orz 經驗嚴重不足阿 ※ 編輯: kay1212 來自: 140.120.15.176 (03/21 11:18)

03/21 11:18, , 11F
感謝k兄跟kk兄回應
03/21 11:18, 11F

03/21 12:07, , 12F
可以試試看跨視窗呼叫 javascript , 把值當參數丟進去
03/21 12:07, 12F

03/21 14:40, , 13F
正在嘗試K大的方法,不過卡關中.. js子母視窗傳值不熟 Orz
03/21 14:40, 13F

03/21 17:28, , 14F
所以B網頁到底有沒有接收到A網頁傳過來的參數?
03/21 17:28, 14F
B網頁會接收A網頁利用js.jQuery方法傳過來的一個陣列

03/21 17:45, , 15F
針對你對我推文回覆的部份,我有做過類似的東西..
03/21 17:45, 15F

03/21 17:46, , 16F
新的按鈕按下後修改form的action和target,然後觸發submit
03/21 17:46, 16F

03/21 17:47, , 17F
接著在將action和target改回原本的,我是做在編輯文章的「預
03/21 17:47, 17F

03/21 17:47, , 18F
覽」功能,將資料submit到預覽的頁面
03/21 17:47, 18F
感謝kk大,這是一個很重要的tip,這讓我腦內的想法又開始動了起來 非常感謝

03/21 21:10, , 19F
已經變得太複雜了,不過如果是 win,open() 的話,被open的
03/21 21:10, 19F

03/21 21:10, , 20F
傢伙如果是同網域,可拿 opener 來存取開他的人的 document
03/21 21:10, 20F

03/21 21:11, , 21F
很多預覽其實可以這樣作。
03/21 21:11, 21F

03/21 21:11, , 22F
原本的題目我倒是看不懂 Orz 有簡單犯例會比較清楚。
03/21 21:11, 22F
QQ 我真希望表達能力能夠好一點,總之感謝TonyQ大回復 其實我有盡量的簡化我的需求,其實在A網頁中 checkbox還是埋在iframe裡面,我是想盡辦法才將值取出呢 關於opener,我今天在爬的時候也有看到子母視窗可以用這個傳值 我盡量的去吸收,但是消化不良中... 我這個月簡直一次看了太多東西,基礎打的不好就上陣了 我會盡量的去補充js的基本功 如果我提問了很基礎,很愚蠢的問題 請各位不吝指教,我會更加精進自己的 QQ

03/21 21:38, , 23F
TonyQ大在用手機上PTT嗎?
03/21 21:38, 23F

03/21 22:49, , 24F
是啊,你看我發文不附code通常就是手機
03/21 22:49, 24F

03/21 22:50, , 25F
不 其實我是發現你.打成, XD
03/21 22:50, 25F
※ 編輯: kay1212 來自: 223.140.50.16 (03/22 01:54)

03/22 01:54, , 26F
感謝各位的回答呀 QQ
03/22 01:54, 26F

03/22 02:46, , 27F
或者是用javascript建一個新的form 把要的值塞進去
03/22 02:46, 27F

03/22 02:47, , 28F
再用javascript submit這個form這樣@@ 不過直接改action
03/22 02:47, 28F

03/22 02:47, , 29F
好像比較簡單 上面的方法
03/22 02:47, 29F
文章代碼(AID): #1FQJhB6J (Ajax)
文章代碼(AID): #1FQJhB6J (Ajax)