J'essaye d'obtenir le code de saisie semi-automatique de JQueryUI en travaillant avec un service Web ASMX. Je me rapproche, mais frappé encore un autre mur hier. Les données JSON sont renvoyées au format {d: "data"} (voir http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx). Mes données ressemble maintenant:JSON a renvoyé des données au format {d: "data"}
d: "[{"DOTNumber":"001061010","JobTitle":"Project Architect"},{"DOTNumber":"003061005","JobTitle":"Principal Electrical Engineer"}]"
Mon code est:
$(function() {
function log(message) {
$("<div/").text(message).prependTo("#log");
$("#log").attr("scrollTop", 0);
}
});
$("#dotmatch").autocomplete({
source: function(request, response) {
$.ajax({
type: "POST",
url: "/AutoSuggestJSTest/AutoSuggest.asmx/DOTFind",
contentType: 'application/json',
dataType: "json",
data: JSON.stringify({ prefixText: request.term, count: 20 }),
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
},
success: function(data) {
var safe = data;
response($.map(safe.d, function(item) {
return {
label: item.JobTitle + "(" + item.DOTNumber + ")",
value: item.DOTNumber
}
}));
}
});
},
minLength: 2,
select: function(event, ui) {
log(ui.item ?
"Selected: " + ui.item.value + " aka " + ui.item.id :
"Nothing selected, input was " + this.value);
$get("DOTNumber").value = ui.item.value;
},
});
Le problème réside dans la fonction de réussite.
Quelle est la bonne syntaxe pour passer le "d" problème?
De la version que je regarde, l'ajax est géré dans la fonction de saisie semi-automatique. Utilisation: saisie semi-automatique (url ou data, [options]) http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions – wajiw
J'ai vu des dizaines d'articles sur ce problème et le code fonctionne, mais les données JSON sont être enveloppé comme je l'ai décrit. Voir le lien vers haacked.com. –