2015-04-22 3 views
1

У меня есть форма с выбором и вариантами на выбор. значения опций выбора приведены в классическом цикле asp.Значение Javascript для MySQL Выберите

Второй выбор заполняется из javascript, основываясь на том, что сделало первое значение выбора. Затем он посылает значение путем

var newOption = document.createElement("option"); 
newOption.value = "2015"; 
newOption.innerHTML = "Year"; 
s2.options.add(newOption); 

Так теперь я хочу, чтобы расширить, где он будет приносить MySQL записей (без представления пока) на основании того, что второй выбор выбор был сделан

Set package = ObjConn.execute ("Select * from pack_plan where idpack = "JS.value??"") 

Так я хотите иметь возможность получать значение и выбирать записи из него. И я понятия не имею, как это будет сделано. Помогите оценить.

+0

Вы должны были бы отправить 'JS.value' на сервер, либо в querystring или как переменную формы, так как ваш классический код asp отображается на сервере до загрузки страницы, а ваш JS отображается браузером после загрузки страницы. Возможно, есть способ сделать это с помощью ajax-звонка (ajax - это не то, что я действительно получил до настоящего времени) – John

ответ

0

Следующее решение работает отлично для меня. Поскольку вы, вероятно, не хотите перезагружать страницу, вам нужно сделать асинхронный запрос для извлечения значений второго выбора в соответствии с выбором, который пользователь делает при первом выборе. Итак, на вашей странице у вас будет форма с выборами и несколько строк javascript, которые сделают асинхронный вызов.

<script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js" type="text/javascript"></script> 

<script type="text/javascript"> 
function jsfunc1(primaryjsvalue){ 
    $.ajax({url:"http://www.yoursite.com/secondary_list.asp?reqvalue="+primaryjsvalue.value, success:function(result){ 
if (result == "errore") { 
    $("#thesecondarylist").html('Error'); 
} else { 
    $("#thesecondarylist").html(result); 
} 
}}); 
} 
</script> 

<select id="selectid1" name="primaryselect" onchange="jsfunc1(this)"> 
    <option value="val1" id="valid1"> Val1 </option> 
    <option value="val2" id="valid2"> Val2 </option> 
    <option value="val3" id="valid3"> Val3 </option> 
</select> 

<div id="thesecondarylist"> 
<select id="selectid2" name="secondaryselect" > 
    <option value="" id=""> Choose from primary list to see available values </option> 
</select> 
</div> 

страница secondary_list.asp будет запрашивать БД в соответствии с выбранной опцией на главной странице, и будут цикл каждого значения писать ответ, который будет содержанием «thesecondarylist» дел.

Так будет содержать только код для открытия соединения, запрос к БД и печать второй опции выбора, заполненной с db.

Ваш файл жерех может сразу начать с:

В основном код

Set package = ObjConn.execute ("Select * from pack_plan where idpack = "JS.value??"") 

стать

Set package = ObjConn.execute ("Select * from pack_plan where idpack = "&Request.QueryString("reqvalue")&"") 
'... retrieve your records ... 
%> 
<select id="selectid2" name="secondaryselect" > 
<% 
while not rsSecondList.EOF 
    theValue = rsSecondList("packname") 
    theId = rsSecondList("idpack") 
%> 
<option value="<%=theValue%>" id="<%=theId%>"> <%=theValue%> </option> 
<% 
rsSecondList.Movenext 
Wend 
%> 
</select> 
+0

Работает как шарм, хад, чтобы изменить rsSecondList на package.eof и rsSecondList.Movenext на package.Movenext то это сработало, спасибо за помощь! –

+0

Отлично, я рад, что это помогло. Чтобы сделать его идеальным, я предлагаю вам заботиться о безопасности, делая некоторые проверки данных QueryString, чтобы избежать внедрения sql. (Замените кавычки, остановите команды sql, проверьте тип данных ...) –

Смежные вопросы