2017-08-21 7 views
0

私は文字列txtRowから行数を要求し、選択ボックスの行数を表示します。私の選択ボックスには、ID selID0、selID1、selID2 ...などがあります。次に、選択ボックスでオプションを選択します。次に、AJAXを使用して選択されていない選択ボックス(selID)を確認します。私はJavaScriptを使用してAjaxでデータの文字列を設定しています。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は...ので、選択された行数に応じて、上のすべての選択されています。私は状態を確認し、それに応じて警告が表示されます、ページに戻る1アヤックスで

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

文字列を返します。

ここで問題は、selID0、selID1値をpage2に渡すときに発生します。 forループを使用してデータを入力すると、ページ1の値を取得できません。しかし、私は以下のような文字列をハードコードしている場合。私はページ2の値を取得することができます。私はkae変数をチェックし、生成された文字列はOKですが、私はなぜ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); 
     } 
    }); 
} 
<% 
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

+0

を経る必要がありますか?デフォルトでは1つのリクエストしか許可されていないため、AJAXリクエストがハングしている可能性があります。このサイトのアプリケーションプールの詳細設定でワーカープロセスの最大数を増やすことができます。 –

+0

こんにちはリコさんの返信ありがとう、私はワーカープロセスの最大数を10に切り替えましたが、まだ動作していません。 –

+0

申し訳ありません@Hansheung Cheah、私はページがあなたの説明から正確に何をすべきかはわかりません。しかし、あなたのページ内のハードコードされたオブジェクトがJavaScriptでFORループで構築されているという主な問題は、あなたのkae変数にはJavaScriptオブジェクトではなく文字列が含まれている可能性があります。私はブラウザのデバッガを使用してkae変数の内容とハードコードされたデータをチェックし、何が違うのかを確認します。 –

答えて

0

代わりに文字列$("#selID0").val()を送信するページの完全なコードページの完全なコード値。ある

、変更:

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

へ:

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

は、ネットワークタブをチェックして、値がページ2に送信されているかを確認します。 kaeというフィールドが表示されます。このフィールドには、これらのselxx値がすべて含まれています。これらの値にアクセスするには、page2を変更する必要があります。

あなたがまだの場合は、あなたはIISのワークステーション版で開発しているthe documentation on $.ajax

関連する問題