使用 JavaScript 填充 AJAX 中的数据字符串无效
Using JavaScript to populate data string in AJAX not working
我有第 1 页,它将请求字符串 txtRow 的行数并显示 select 框的行数。我的 select 框将具有 ID selID0、selID1、selID2...等等,具体取决于行数。然后,用户将选择 select 框中的选项。然后我想检查哪个 select 框 (selID) 不是由用户使用 AJAX 编辑的 select。我正在使用 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
},
然后我会 post 到 asp 第 2 页做一些检查。如果我的 select 框中的值为空,我将 return 一个字符串
response.write "{ ""data"": { ""status"": ""errorInfo"" } }"
如果所有 select 框,selID0、selID1、selID2...等等,取决于 selected 的行数都是 selected。我会return一个字符串
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
%>
您必须发送它的值,而不是发送字符串 $("#selID0").val()
。
即变化:
var str = '"selID' + i + '":$("#selID' + i + '").val(),';
至:
var str = '"selID' + i + '":"' + $("#selID" + i).val() + '",';
检查网络选项卡,查看哪些值被发送到 page2。您应该会看到一个名为 kae
的字段,其中包含所有这些 selxx 值。您必须更改 page2 才能访问这些值。
如果你还没有,你应该通过 the documentation on $.ajax
我有第 1 页,它将请求字符串 txtRow 的行数并显示 select 框的行数。我的 select 框将具有 ID selID0、selID1、selID2...等等,具体取决于行数。然后,用户将选择 select 框中的选项。然后我想检查哪个 select 框 (selID) 不是由用户使用 AJAX 编辑的 select。我正在使用 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
},
然后我会 post 到 asp 第 2 页做一些检查。如果我的 select 框中的值为空,我将 return 一个字符串
response.write "{ ""data"": { ""status"": ""errorInfo"" } }"
如果所有 select 框,selID0、selID1、selID2...等等,取决于 selected 的行数都是 selected。我会return一个字符串
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
%>
您必须发送它的值,而不是发送字符串 $("#selID0").val()
。
即变化:
var str = '"selID' + i + '":$("#selID' + i + '").val(),';
至:
var str = '"selID' + i + '":"' + $("#selID" + i).val() + '",';
检查网络选项卡,查看哪些值被发送到 page2。您应该会看到一个名为 kae
的字段,其中包含所有这些 selxx 值。您必须更改 page2 才能访问这些值。
如果你还没有,你应该通过 the documentation on $.ajax