经典的asp不会用JS改变形式值

时间:2014-01-28 15:13:39

标签: javascript vbscript asp-classic

尝试将变量从JS传递给Classic asp。我使用一个简单的JS脚本来更新表单字段的值,然后尝试使用Classic asp进行选择。这是我的代码

PAGE1

<script type="text/javascript">
<!--
function GetID()
{
var url = window.location.href;
document.forms[0].getid.value = url;
}
window.onload = GetID;
// -->
</script>
.......

<form>
<input name="getid" id="getid" value="" />
</form>

PAGE2

<%dim user 
user = Request.form("getid")%>
<p>ID:<%=user%></p>

知道为什么那不起作用?

3 个答案:

答案 0 :(得分:1)

我可以在这里建议一些事情......

  1. 尝试设置form方法...

    <form method="post">...</form>
    
  2. 确保您确实正在识别var url指向的控件;使用document.getElementById("...")可能更安全:

    document.getElementById("getid").value = url;
    
  3. 这些可能有用,但如果没有,请告诉我......

    - 编辑 -

    更多...

    如果您愿意,可以使用Microsoft XMLHTTP对象传递数据(非常类似于AJAX)......

    /*
        AJAX extension to allow dynamic interaction between pages.
    
        This section initialises the variable used to store the XMLHTTP request object.
    */
    var xmlhttp;
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari...
        xmlhttp=new XMLHttpRequest();
    }
    else {
        // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
    /*
        ajaxPage
            Posts a request to the scripted specified page.
        Parameters:
            postPage (string) - The page to be opened.
            paramList (string) - The list of parameters/values to be applied to the page.
        Usage:
            var targetBlock = document.getElementById("resultDiv");
            targetBlock.innerHTML = ajaxPage("resultsPage.asp","calcVal=545")
        Description:
            This routine uses the xmlhttp requesting tools within JavaScript to act as an intermediary between
            script and page.  Specify all paramters in the paramList by separating with an ampersand (&).
    */
    function ajaxPage(postPage, paramList) {
        xmlhttp.open("POST",postPage,false);
        xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        xmlhttp.send(paramList);
        return xmlhttp.responseText;
    }
    

答案 1 :(得分:1)

您忘记提交表单:

function GetID()
{
    var url = window.location.href;
    var oForm = document.forms[0];
    oForm.getid.value = url;
    oForm.action = "Page2.asp";
    oForm.submit();
}

答案 2 :(得分:-1)

- 放弃此帖子,请参阅Shadow Wizard的评论 -
@ vast365,这是失败的,因为在window.onload你需要括号来执行这个函数,比如window.onload = GetID();,否则你告诉javascript设置目标var(在此case your field's value)你的函数GetID的定义。当我将定义移到foo变量,然后执行foo()时,您可以在我的小提琴中看到这一点:http://jsfiddle.net/jb_pcs/DPaYt/

所以你想要的只是:http://jsfiddle.net/jb_pcs/DPaYt/1/

PS - 这与您的ASP代码有。 :)
PPS - 您可以在将页面发布到ASP之前始终提醒您的新字段值,如下所示:http://jsfiddle.net/jb_pcs/DPaYt/2/

干杯!