iT邦幫忙

1

window.open參數傳遞問題

  • 分享至 

  • xImage

1、以下這段沒有問題
onClick="window.open('xray_excel.asp?UT=20251223&WO=WO1-25080721', '_blank', 'width=800,height=600');"

2、將傳遞的值改成變數后就沒辦法過了
onClick="window.open('xray_excel.asp?UT=' + UT + '&WO=' + WO + '', '_blank', 'width=800,height=600');"

之前用第二點是可以的,現在不行也不知道問題出在那里,上網找了很多資料,但試了都沒成功,還請各位大大幫忙看一下,謝謝囉!

圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
allenlwh
iT邦高手 1 級 ‧ 2025-12-24 11:45:59

試試這樣是否可以

UT_url ="UT="+UT;
WO_url ="&WO="+WO;
url="xray_excel.asp?"+UT_url+WO_url;
onClick="window.open(url, '_blank', 'width=800,height=600');"
sam_sune iT邦新手 5 級 ‧ 2025-12-24 12:00:45 檢舉

謝謝你的回覆,你這個方法我之前試過了也是不行,而且Edge不會顯示詳細的錯誤內容,所以只知道有Bug,卻不知道是錯在那里

0
Pod042A
iT邦新手 5 級 ‧ 2025-12-24 14:36:07

請先檢查變數 UTWO 是否在 onClick 觸發的作用域中已定義。推斷是由於無法讀取有效的 UTWO 值,導致無法開啟有效的新頁面。

如果 UTWO 值是由其他函式定義,推薦以下三種傳遞參數的方法:

1. 全域

let UT, WO;
function setValue() { /* 設定 UT 和 WO 值,並儲存於全域 */ }

function openWindow() {
    const url = "xray_excel.asp?";
    const params = new URLSearchParams();
    params.set("UT", UT);
    params.set("WO", WO);
    window.open(url + params, '_blank', 'width=800,height=600');
    // 假設:
    // UT = "20251223"
    // WO = "WO1-25080721"
    // 則:
    // url + params = "xray_excel.asp?UT=20251223&WO=WO1-25080721"
}

然後在 HTML 元素中呼叫 openWindow 函式。

<button onClick="openWindow()"></button>

2. 事件監聽器

在初始化時給 HTML 元素綁定事件監聽器,從全域取得 UTWO 的值。

let UT, WO;
function setValue() { /* 設定 UT 和 WO 值,並儲存與全域 */ }

document.getElementById(/* HTML 元素 ID */).addEventListener("click", openWindow);

3. HTML 屬性儲存變數

UTWO 的值作為 HTML 屬性儲存於 HTML 元素中,在觸發 onClick 事件時從元素中讀取屬性。

function setValue() {
    const button = document.getElementById(/* HTML 元素 ID */);
    button.setAttribute("data-UT", /* UT值 */);
    button.setAttribute("data-WO", /* WO值 */);
}
<button id="<!--HTML 元素 ID-->" onClick="const params = new URLSearchParams();params.set('UT', event.currentTarget.getAttribute('data-UT'));params.set('WO', event.currentTarget.getAttribute('data-WO'));window.open('xray_excel.asp?' + params, '_blank', 'width=800,height=600')"></button>
看更多先前的回應...收起先前的回應...
sam_sune iT邦新手 5 級 ‧ 2025-12-24 17:20:28 檢舉

谢谢你的回复,我试了你的方法但還是不行,它出現「500 - 內部伺服器錯誤。」的錯誤訊息

Pod042A iT邦新手 5 級 ‧ 2025-12-24 17:37:26 檢舉

那就需要檢查API伺服器是否有正常接收請求,以及是否正常執行。

Pod042A iT邦新手 5 級 ‧ 2025-12-24 17:37:26 檢舉

可能是API伺服器處理請求時發生錯誤,導致無效的回應。

sam_sune iT邦新手 5 級 ‧ 2025-12-25 16:03:46 檢舉

谢谢你的回复,我已經找到問題點了,我在資料型態部份未正確轉換,感謝你的幫忙喲!

我要發表回答

立即登入回答