使用JavaScript填充AJAX中的数据字符串不起作用

时间:2017-08-21 10:35:03

标签: javascript jquery ajax asp-classic

我有第1页,它将从字符串txtRow请求行数并显示选择框的行数。我的选择框将具有ID selID0,selID1,selID2 ......等等,具体取决于行数。然后,用户将在选择框中选择选项。然后,我想检查用户是否使用AJAX选择了哪个选择框(selID)。我正在使用javascript填充Ajax中的数据字符串。

var kae = "";
 for (i = 0; i< <%=sROW %>; i++){
    var str = '"selID' + i + '":$("#selID' + i + '").val(),';
    kae = kae + str
 }`
 $.ajax({
         url    : url_to,
         type   : 'POST',
         data   :  { "txtRow":$("#txtRow").val(), kae 
         },

然后我会发布到asp进行一些检查。如果我的选择框中的值为空,我将返回一个字符串

response.write "{ ""data"": { ""status"": ""errorInfo"" } }"

如果所有选择框,selID0,selID1,selID2等等都取决于所选的行数,则全部被选中。我将返回一个字符串

response.write "{ ""data"": { ""status"": ""ok "" } }"

回到第1页Ajax,我将检查状态并相应地显示警报。

现在将selID0,selID1值传递给page2时出现问题。如果我使用for循环来填充数据,那么第2页无法从第1页获取值。但是,如果我像下面那样硬编码字符串。我可以设法获得第2页的值。我检查了kae变量,生成的字符串是正常的,但我不知道为什么我无法将值传递给第2页?请帮忙,非常感谢。

"selID0":$("#selID0").val(),
"selID1":$("#selID1").val(),

第1页的完整代码

<%
sRow = Cint(request("txtRow"))
%>

<form name="form2" action="ax_test.asp" method="post">
<input type="hidden" id="txtRow" name="txtRow" value="<%=sRow%>" />
<table>
<%  i=0
do while i < Cint(sROW)

    response.write "<tr>"
    response.write "<td>"
    response.write "    <select class='form-control' id='selID" & i & "' name='selID" & i & "'>"
    response.write "        <option value=''>Select</option>"
    response.write "        <option value='a'>a</option>"
    response.write "        <option value='b'>b</option>"
    response.write "        <option value='c'>c</option>"
    response.write "        <option value='d'>d</option>"
    response.write "    </select>"
    response.write "</td>"
    response.write "</tr>"
    i=i+1
loop

%>
</table>


<button type="button" id="btnSave" name="btnSave" value="save" class="btn btn-default"
    style="width: 90px" onclick="checkselect();">Save</button>
</form>

<script>
function checkselect() {

var url_to  = 'ax_postcheckselect.asp';
var kae = "";

for (i = 0; i< <%=sROW %>; i++){
    var str = '"selID' + i + '":$("#selID' + i + '").val(),';
    kae = kae + str
}

     $.ajax({
         url    : url_to,
         type   : 'POST',
         data   :  { "txtRow":$("#txtRow").val(), kae 
         },
         success    : function(res){

                if(res.data.status == "errorInfo"){
                     return alert('You miss selecting something ');
                }else if(res.data.status == "ok") {
                     alert("Successfull.");
                    location.reload();
                }
         },
         error  : function(error){
             console.log(error);
         }
     });
}

第2页的完整代码

<%
Response.ContentType = "application/json"   
Server.ScriptTimeout = 1000000


sRow = request("txtRow")

response.write "{ ""data"": { ""status"": """ & request("selID0") & """ } }"
response.end

bSelect = "Y"
i = 0
do while i < Cint(sRow)
   sID = request("selID" & i )
       if sID = "" then 
            bSelect = "N"
            exit Do     
       end if       
    i = i + 1
loop

if bSelect = "N" then
    response.write "{ ""data"": { ""status"": ""errorInfo"" } }"
    response.end
else
    response.write "{ ""data"": { ""status"": ""ok"" } }"
    response.end 
end if

%>

Can't get the value of selID0 in page 2, Please help

1 个答案:

答案 0 :(得分:0)

您必须发送字符串$("#selID0").val(),而不是发送字符串var str = '"selID' + i + '":$("#selID' + i + '").val(),';

即改变:

var str = '"selID' + i + '":"' + $("#selID" + i).val() + '",';

为:

kae

检查网络选项卡,查看要发送到page2的值。您应该看到一个名为 <com.custom.views.CustomTextView android:id="@+id/txt_send_chat" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:gravity="center_vertical" android:maxWidth="250dp" android:textColor="@color/color_chat_sender" android:textSize="16sp" app:font_name="@string/font_roboto_regular" /> 的字段,其中包含所有这些selxx值。您必须更改page2才能访问这些值。

如果您还没有,则应通过the documentation on $.ajax