avec le script, demander au serveur envoie toujours une chaîne vide (même si la valeur est pas emtpty), où la ligne de données est:Pourquoi JQuery .val() renvoie une chaîne vide? ci-dessous
data: "{ 'folderName': '" + $(this).val() + "' }"
L'élément html à l'étude est la suivante:
<asp:TextBox id="searcher" runat="server" ClientIDMode="Static" CssClass="classificationFolder" />
Script est:
<script type="text/javascript">
$(document).ready(function() {
$(".classificationFolder").each(function() {
$(this).autocomplete({
source: function (request, response) {
$.ajax({
url: "Services/svcFolder.asmx/SearchFolders",
data: "{ 'folderName': '" + $(this).val() + "' }",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data.d, function (item) {
return {
value: item.Name,
label: item.Name + " " + item.Type
}
}))
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.responseText);
}
});
},
minLength: 2,
});
})
});
rEA fils que je sélectionne les éléments par le sélecteur de classe css ($ (". classementFolder")) est que, ce contrôle est un contrôle utilisateur et utilisé dans la même page plus d'une fois. C'est pourquoi je n'utilise pas $ ("# searcher").
J'ai testé le code dans IE8 et Chrome 8.0.552.28 bêta. Ce problème survient dans les deux navigateurs. D'autre part, la requête est envoyée au serveur, la réponse du client a bien été reçue et la réponse est traitée sur le client.
Alors quelqu'un a une idée de la raison pour laquelle $ (this) .val() renvoie toujours une chaîne vide?
+1 Pas besoin de conjecture, vous avez raison sur Scope. Mais 'this' dans son cas fait référence à la fermeture la plus proche, probablement les options ajax ou la fonction anonyme dans le paramètre' source'. – Stephen
Qu'est-ce que "la saisie semi-automatique"? – AndreKR
@AnreKR Je veux dire que l'objet est passé à la fonction 'autocomplete', mais @Stephen est probablement plus correct avec son évaluation. –