J'écris une petite application dans ASP classique. J'ai une page qui a un formulaire, qui poste sur une deuxième page. Inclus avec le POST du formulaire, sont les téléchargements de fichiers, d'où la nécessité d'une méthode POST.La page ASP ne reçoit pas les paramètres POST
La deuxième page ne voit cependant AUCUN des champs envoyés par la première page. Appelant soit Request("param")
ou Request.Form("param")
tous les deux retournent simplement la chaîne vide.
Si je passe la méthode sur mon formulaire de POST GET (avec NO autres modifications), les valeurs sont bien repris par la page d'accueil, bien sûr je ne peux pas faire les téléchargements de fichiers, qui sont un partie cruciale de cette application.
En mode GET, les paramètres sont tous placés sur l'URL comme prévu. En mode POST, j'ai déclenché FireBug et examiné les données POST de ma requête. Le formulaire d'origine IS envoyant toutes les valeurs de la requête (elles apparaissent dans FireBug comme prévu), le problème semble donc se situer à la fin de la page de réception.
Le formulaire est soumis par le code, appelé à partir du bouton avec le onclick="javascript:saveMinutes();"
Ma forme et la fonction saveMinutes() sont déclarés comme suit:
<form id="frmMinutes" enctype="multipart/form-data" method="post" action="saveminutes.asp">
<table id="tblMinutes" style="width: 100%;">
<tr>
<td>
<select id="selYear" name="year" size="13" onclick="javascript:setDatePickerRange(); checkForMinutes();">
<%For lc = Year(Now) To getMinutesFirstYear() Step - 1%>
<option value="<%=lc%>" <%If lc = Year(Now) Then%>selected="selected"<%End If%>><%=lc%></option>
<%Next%>
</select>
</td>
<td>
<select id="selMonth" name="month" size="13" onclick="javascript:setDatePickerRange(); checkForMinutes();">
<%For lc = 1 To 12%>
<option value="<%=lc%>" <%If lc = Month(Now) Then%>selected="selected"<%End If%>"><%=MonthName(lc)%></option>
<%Next%>
</select>
</td>
<td style="width: 100%; padding-left: 20px;">
<table id="enterMinutes" style="width: 100%">
<tr>
<th>Topic:</th>
<td><input id="topic" name="topic" type="text" maxlength="100" field="topic" /></td>
</tr>
<tr>
<th>Presenter:</th>
<td><input id="presenter" name="presenter" type="text" maxlength="100" field="presenter" /></td>
</tr>
<tr>
<th>Date:</th>
<td><input id="mtgdate" name="mtgdate" type="text" maxlength="10" class="datepick" field="mtgdate" readonly="readonly" /></td>
</tr>
<tr>
<th style="vertical-align: top;">Files:</th>
<td style="text-align: left;">
<input id="file0" name="file0" type="file" size="35" /><span class="redEmphasis" style="margin: 0px 10px 0px 10px;">(.doc or .docx)</span><input type="button" value="+" onclick="javascript:addFileUpload();" />
</td>
</tr>
<tr>
<th style="vertical-align: top;"></th>
<td style="text-align: left; padding: 10px 0px 10px 0px;">
<input type="button" style="width: 100%" value="update minutes" onclick="javascript:saveMinutes();" />
</td>
</tr>
</table>
<span id="warnexist" class="redEmphasis" style="display: none;">The selected month already has associated minutes(). doc files take precedence over docx.</span>
</td>
</tr>
</table>
</form>
saveMinutes():
Lorsque votre from est codé en multipartie, vous ne pouvez pas obtenir les valeurs POST en tant que vieux paramètres simples.function saveMinutes() {
if($('form#frmMinutes input[type=text]').filter(function() { return $(this).val() == '' }).length > 0) {
alert('Please enter all fields.');
return;
}
if ($('form#frmMinutes input#file0').filter(function() { return !$(this).val().match(/.*\.docx?$/i) }).length > 0) {
alert('First file must be doc or docx.');
return;
}
$('form#frmMinutes input[type=file]').filter(function() { return $(this).val() == '' }).next().remove();
$('form#frmMinutes input[type=file]').filter(function() { return $(this).val() == '' }).remove();
removeDupeFiles();
// reindex file inputs after removing emptys/dupes
var fs = $('form#frmMinutes input[type=file]:gt(0)');
for (lc = 1; lc <= fs.length; lc++) {
var fid = 'file' + new String(lc);
$(fs[lc-1]).attr('id', fid).attr('name', fid);
}
$('form#frmMinutes')[0].submit();
}
Si vous publiez le code que vous utilisez pour extraire les fichiers téléchargés, cela sera plus utile que ce que vous avez ici. Merci. –
J'avais utilisé juste Request ("param"), j'avais complètement oublié les paramètres simples nécessaires pour être également analysé/décodé. J'ai une classe que j'ai téléchargé à utiliser pour les fichiers, je ne savais pas que je devais aussi l'utiliser pour les paramètres d'entrée simples. – eidylon