Problem med JSON, Microsoft Ajax og JQuery og paramter "d"-param
Hej,Jeg sidder og prøver at lege med lidt JQuery i form af et AutoComplete plugin, som jeg har lidt problemer med.
Når jeg kalder min WCF service (webservice) og får min JSON retur fra serveren, så har Microsoft Ajax appended en "d"-parameter, så min JSON reelt ikke længere er valid mere - og derfor fejler min nuværende funktion:
$('#txtLocation').autocomplete('<%= ResolveUrl("~/AutoCompleteService.svc/LookupByLocation") %>', {
dataType: 'json',
parse: function(data) {
var rows = new Array();
for (var i = 0; i < data.length; i++) {
rows[i] =
{
data: data[i],
value: data[i].LocationText,
result: data[i].LocationText
};
}
return rows;
},
formatItem: function(row, i, n) {
return row.LocationText; // + ' - ' + row.Date;
},
width: 300,
scrollHeight: 300
})
...svaret, som jeg får retur fra serveren er:
{"d":"[{\"LocationText\":\"Denmark \",\"ID\":1},{\"LocationText\":\"Norway \",\"ID\":2}]"}
..hvor det reelt set bør være:
[{"LocationText":"Denmark","ID":1},{"LocationText":"Norway ","ID":2}]
Microsft's ASP.NET team skriver selv følgende om det:
=====================================================
The ASP.NET AJAX library uses the "d" parameter formatting for JSON data. This forces the data in the example to appear in the following form:
{"d" : "bankaccountnumber", "$1234.56" }
Because this is not a valid JavaScript statement, it cannot be parsed and instantiated as a new object in JavaScript. This therefore prevents the cross-site scripting attack from accessing data from AJAX JSON services on other domains.
=====================================================
...det er jo meget godt,...men hvad gør jeg få at komme ud over den?
Håber der en enkelt derude der er i stand til at hjælpe...
:-)