Avatar billede javanic Nybegynder
20. januar 2009 - 22:19 Der er 4 kommentarer

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...

:-)
Avatar billede jokkejensen Novice
20. januar 2009 - 22:48 #1
Kan man se det ?
Avatar billede javanic Nybegynder
21. januar 2009 - 09:00 #2
Nej, det er desværre ikke online.

Men jeg går lidt ud fra, at det er et problem der opstår i forbindelse med JQuery og Microsoft Ajax, så jeg håber lidt på at der er nogen der har lidt erfaring med at benytte disse to frameworks sammen.
Avatar billede olebole Juniormester
21. januar 2009 - 18:49 #3
<ole>

Problemet er, at MS Ajax ikke returnerer valid JSON-kode. Løsningen er vel at bruge et andet framework eller at skrive en ny JSON-del, der producerer brugbart output

/mvh
</bole>
Avatar billede olebole Juniormester
21. januar 2009 - 18:52 #4
"This therefore prevents the cross-site scripting attack from accessing data from AJAX JSON services on other domains." >> Ja, man kunne også give hønsene i Zimbabwe 5 gram mere foder hver om ugen ... det ville hjælpe ligeså godt  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester