如何将变量传递到另一个页面?

时间:2014-05-15 12:03:24

标签: javascript asp.net

我实际上使用下面的代码让它工作。感谢所有给我他们投入的人,但不得不说我很难让它正常工作。希望它对javascript中的新用户有所帮助。

function SelectedRow() {
            (function () {
                if (window.addEventListener) {
                    window.addEventListener('load', run, false);
                } else if (window.attachEvent) {
                    window.attachEvent('onload', run);
                }

                function run() {
                    var table = document.getElementById('alternativeCableTable');
                    table.onclick = function (event) {
                        var target = event.target || event.srcElement;
                        while (target && target.nodeName != 'TR') { 
                            target = target.parentElement;
                        }              
                        var cells = target.cells;              
                        if (!cells.length || target.parentNode.nodeName == 'THEAD') {
                            return;
                        }
                        var stockcode = document.getElementById('stockcode');
                        var wiretype = document.getElementById('wiretype');
                        var wirelength = document.getElementById('wirelength');
                        var terminalA = document.getElementById('termA');
                        var sealA = document.getElementById('sealA');
                        var terminalB = document.getElementById('termB');
                        var sealB = document.getElementById('sealB');
                        stockcode.value = cells[0].innerHTML;
                        wiretype.value = cells[1].innerHTML;
                        wirelength.value = cells[2].innerHTML;
                        terminalA.value = cells[3].innerHTML;
                        sealA.value = cells[4].innerHTML;
                        terminalB.value = cells[5].innerHTML;
                        sealB.value = cells[6].innerHTML;
                        alert("The select data is sent to print page");
                        window.open("http://10.19.13.67/ReworkLabels/PrintLabelPage.aspx?stockcode=" + decodeURIComponent(stockcode.value) + "&wiretype=" + decodeURIComponent(wiretype.value) + "&wirelength=" + decodeURIComponent(wirelength.value)
                       + "&terminalA=" + decodeURIComponent(terminalA.value) + "&sealA=" + decodeURIComponent(sealA.value) + "&terminalB=" + decodeURIComponent(terminalB.value) + "&sealB=" + decodeURIComponent(sealB.value),"_blank");

                    };

                }

            })();
        }

2 个答案:

答案 0 :(得分:2)

使用本地存储,而不是传递网址参数和/或Cookie,因为后两者有很多限制。

http://www.webdesignerdepot.com/2013/04/how-to-use-local-storage-for-javascript/

中查看如何执行此操作的示例

如果由于某种原因在服务器端需要这些值,那么您可以利用JSON序列化将值作为POST参数传递。 (或者只是带有隐藏输入的HTML表单;不要忘记将名称属性放在需要提交给服务器的html表单元素上。)

编辑:在你的问题的二读,看起来你只需要2个简单的字符串值。在这种情况下,请检查两个输入元素的属性。 https://developer.mozilla.org/en/docs/Web/API/HTMLInputElement

此外,您可能希望为这些GET参数指定名称,例如

window.open("http://Testing/ReworkLabels/Default.aspx?f1="+encodeURIComponent(f1.value)+"&f2="+encodeURIComponent(f2.value),"my window");

有关encodeURIComponent函数的详细信息,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

请参阅Retrieve GET variables from URL in ASPX以便在目标ASP.NET页面中阅读这些参数。

另外,请确保不要直接打印它们的值(但要正确转义),以避免跨站点脚本(XSS)漏洞。

请参阅http://msdn.microsoft.com/en-us/library/ff649310.aspxHow do you avoid XSS vulnerabilities in ASP.Net (MVC)?

答案 1 :(得分:1)

尝试

 window.open("http://Testing/ReworkLabels/Default.aspx?"+f1.value+"&"+f2.value,"my window");

代替。