调用页面,使用ajax更新调用方页面中的文本框

调用页面,使用ajax更新调用方页面中的文本框,ajax,asp-classic,Ajax,Asp Classic,我在使用webmatrix的经典asp中使用SQL CE内置数据库来完成这项工作 我有一个页面,有一个文本框,比如说txticketno。现在,这个文本框位于调用者页面上,其中将包含ajax代码 在ajax调用时,被调用的页面将更新DB并获取新的记录ID,我将它存储在一个名为my_tID的隐藏文本框中。我希望在Ajax调用完成时,在调用方的txtTicketNo文本框中更新新的记录ID 我现有的代码如下 <script> function pushTrade(tID) {

我在使用webmatrix的经典asp中使用SQL CE内置数据库来完成这项工作

我有一个页面,有一个文本框,比如说txticketno。现在,这个文本框位于调用者页面上,其中将包含ajax代码

在ajax调用时,被调用的页面将更新DB并获取新的记录ID,我将它存储在一个名为my_tID的隐藏文本框中。我希望在Ajax调用完成时,在调用方的txtTicketNo文本框中更新新的记录ID

我现有的代码如下

<script>
function pushTrade(tID) {

    var tDate, secID, iBuy, iShares, iPrice;
    var a = [];
    document.getElementById("TradeDetails").innerHTML = "";
    a.push(tID);                                                        //a(0) = tID
    tDate = document.NewTicket.txtTrDate.value; a.push(tDate);          //a(1) = tDate
    secID = document.dTable.Security;
    iBuy = document.dTable.Buy;
    iShares = document.dTable.Shares1.value; a.push(iShares);           //a(2) = iShares
    iPrice = document.dTable.Price1.value; a.push(iPrice);              //a(3) = iPrice
    var myMsg = a.length ? a.join(',') : 0;

    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    }
    else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("TradeDetails").innerHTML = "";
            document.getElementById("TradeDetails").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "NewTicket-AJAX-SubPage.asp?myMsg=" + myMsg, true);
    xmlhttp.send();
}
</script>
<body>
<form name="NewTicket" method="POST" action="NewTicket-AJAXErr-Test.asp">
    <input name="txtTicketNo" placeholder="Ticket #"  type="text" value="<%Response.Write(tID)%>" class="textbox" id="txtTicketNo">
    <input name="txtExtRef"   placeholder="Ext. Ref." type="text" value="<%Response.Write(sExtRef)%>" class="textbox" <%if dCheckerSent = "" then response.write " readonly"%>>
    <input name="sID" type="hidden" value="<%Response.Write(sID)%>" id="sID">
    <input name="txtTrDate" id="txtTrDate1" placeholder="Tran Date(ClickHere)" type="text" value="<%Response.Write(tDate)%>" readonly="readonly" class="textbox">
</form>
<form name="dTable">
<div id="DataTable">
<TABLE id="dataTable" width="100%" border="1">
        <TR>
            <TD></TD>
            <TD>B/S</TD>
            <TD>Security</TD>
            <TD>Shares</TD>
            <TD>Price</TD>
        </TR>
        <TR>
            <td><INPUT type="checkbox" name="chk"/></td>
            <td><select name='Buy' ID='Buy1'><option value='1'>Buy</option><option value='0'>Sell</option></select></td>
            <td><select name='Security' ID='S1' data-placeholder="Select Security(s)">
                <option value="000"></option>
                <option value="1">One</option>
                <option value="2">Two</option>
                <option value="3">Three</option>
                </select></td>
            <td><input type='text' name='Shares1' id='Shares11' class='textbox'></td>
            <td><input type='text' name='Price1' id='Price11'   class='textbox'></td>
        </TR>
    </TABLE>
</div>
<div id="TradeDetails"></div>
    </form>
</body>

贸易署职能{
var tDate、secID、iBuy、iShares、iPrice;
var a=[];
document.getElementById(“TradeDetails”).innerHTML=“”;
a、 推(tID);/a(0)=tID
tDate=document.NewTicket.txtTrDate.value;a.push(tDate);//a(1)=tDate
secID=document.dTable.Security;
iBuy=document.dTable.Buy;
iShares=document.dTable.Shares1.value;a.push(iShares);//a(2)=iShares
iPrice=document.dTable.Price1.value;a.push(iPrice);//a(3)=iPrice
var myMsg=a.length?a.join(','):0;
if(window.XMLHttpRequest){
xmlhttp=新的XMLHttpRequest();
}
否则{
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById(“TradeDetails”).innerHTML=“”;
document.getElementById(“TradeDetails”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”,“NewTicket AJAX SubPage.asp?myMsg=“+myMsg,true”);
xmlhttp.send();
}
B/S
安全
分享
价格
买卖
一个
两个
三
我的呼叫页面有这个

<%
dim arrArgs         'arguments received 
arrArgs = Split(request.querystring("myMsg"),",")

response.expires=-1

if arrArgs(0) = "" then                    'insert new Record
    sQuery = "Select max(tID)+1 from Trades"
    Set oRS = oConn.Execute (sQuery)
    if Not (oRS.EOF and oRS.BOF) then
        arrArgs(0) = oRS(0)
    end if
    oRS.Close
    response.write arrArgs(0)
end if%>
<div id="dt_Div">
<TABLE id="ShowDataTable" width="100%" border="1">
<thead>
<tr>
    <TD></TD>
    <TD>B/S</TD>
    <TD>Security</TD>
    <TD>Shares</TD>
    <TD>Price</TD>
</tr>
</thead>
<tr>
    <td><INPUT type="checkbox" name="chk"/><input type="hidden" name="my_tID" id="sub_tIDi" value="<%=arrArgs(0)%>"></td>
    <td><select name='Buy' ID='Buy1'><option value='1' <%if int(arrArgs(9))=1 then Response.write "Selected"%>>Buy</option><option value='0' <%if int(arrArgs(9))=0 then Response.write "Selected"%>>Sell</option></select></td>
    <td><select name='Security' ID='S1' class="chosen-select" data-placeholder="Select Security(s)">
            <option value="000"></option>
                <option value="1">One</option>
                <option value="2">Two</option>
                <option value="3">Three</option>
        </select></td>
    <td><input type='text' name='Shares1' id='Shares11' class='textbox' value="<%=arrArgs(2)%>"></td>
    <td><input type='text' name='Price1' id='Price11'   class='textbox' value="<%=arrArgs(3)%>"></td>
</tr>
</TABLE>
</div>

B/S
安全
分享
价格
买卖
一个
两个
三
感谢你的帮助

问候

Vin已解决

我所要做的就是编辑代码的xmlhttp.onreadystatechange部分

因此,更正后的代码应该如下所示

xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        document.getElementById("TradeDetails").innerHTML = "";
        document.getElementById("TradeDetails").innerHTML = xmlhttp.responseText;
        **document.getElementById("txtTicketNo").value = document.getElementById("sub_tIDi").value;**
    }
}
xmlhttp.open("GET", "NewTicket-AJAX-SubPage.asp?myMsg=" + myMsg, true);
xmlhttp.send();
这解决了我所有的问题


我们一直在编写正确的代码,但挑战在于掌握代码的异步性质。当我将代码移到右侧部分(即xmlhttp.onreadystatechange)时,一切都很好。

那么您的具体问题是什么?可能重复的问题看起来像是您最近发布的问题。由于这个问题仍在继续,您能否避免发布重复的内容。如果你的问题没有得到足够的关注,我试图删除这个问题,因为我想重新尝试问题本身,添加屏幕截图并正确解释情况,但我似乎没有足够的声誉发布屏幕截图,我已经被击倒了。有人说它没有足够的研究。@Valamas AUS问题是如何用新ID更新txticketno,例如由AJAX调用的新页面生成的1248。我尝试了很多方法,包括opener.document.NewTicket.txtTicketNo.value和document.NewTicket.txtTicketNo.value。没有任何效果。